Dal nostro aggiornamento 3.1.0 di oggi, la nostra ricerca non funziona più.
Il nostro team di sysadmin ha identificato un problema e ci ha fornito questo log che indica un errore dell’applicazione.
Qualcun altro riscontra questo problema e quali potrebbero essere gli indizi per risolverlo da soli? Vedo che la ricerca funziona perfettamente su Discourse Meta.
Started GET "/search?q=37%20%20realm&page=1" for [IP_REDACTED] at 2023-01-13 11:19:36 +0000
Processing by SearchController#show as JSON
Parameters: {"q"=>"37 realm", "page"=>"1"}
Completed 500 Internal Server Error in 4ms (ActiveRecord: 0.0ms | Allocations: 1555)
ArgumentError (wrong number of arguments (given 1, expected 0))
lib/search.rb:285:in `execute'
app/controllers/search_controller.rb:73:in `show'
app/controllers/application_controller.rb:414:in `block in with_resolved_locale'
app/controllers/application_controller.rb:414:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:366:in `call'
config/initializers/008-rack-cors.rb:24:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'
Failed to handle exception in exception app middleware : ArgumentError : wrong number of arguments (given 1, expected 0)
La nostra ricerca è completamente interrotta quando viene eseguita su PostgreSQL 14, motivo per cui stiamo ancora distribuendo PostgreSQL 13 per tutti coloro che seguono la nostra installazione standard.
Alla fine lo risolveremo poiché un giorno passeremo a PostgreSQL 15 (o 16), ma potrebbe volerci un po’ di tempo.
Grazie. Stiamo indagando su come ciò possa essere accaduto SE in precedenza avevamo altre versioni di PostgreSQL. Ti ricontatteremo una volta identificato il problema.
Vediamo il requisito “Postgres 13+” qui. Potrei sbagliarmi nel suggerire al tuo team di aggiungere una nota che Discourse supporta solo le versioni 13.X? Forse, un avviso esplicito che le versioni 14/15/… non sono supportate sarebbe utile anche in casi come il nostro.
Vedi, abbiamo la versione 14 almeno da dicembre, e avevamo la versione Stable di Discourse installata da mesi prima. Recentemente siamo tornati alla versione tests-passed, la ricerca ha funzionato come previsto. Oggi, siamo passati da 2.9.0.beta14 a 3.1.0.beta1 e ora è rotto.
Non è chiaro, ma questo era il problema nel mio caso (stessi sintomi, anche se con PostgreSQL13)
Sono sicuro che Richard lo risolverà a breve, nel frattempo una fork e una semplice modifica sono una soluzione.
Oh. Peccato. Ho un sito che ho aggiornato per lo più accidentalmente a PG14 un po’ di tempo fa, e ho pensato che andasse bene.
Ho appena fatto alcune ricerche e non erano palesemente terribilmente interrotte. E il sito è per lo più in cinese, quindi non sarei comunque in grado di dirlo.
Quanto è interrotta e quanto sarà difficile risolverlo?
La modalità sicura influisce solo sul lato client. Questo errore si verifica sul server. Per verificare se l’errore è correlato al plugin delle risposte private, dovrai disinstallare completamente quel plugin.
Questo errore sembra effettivamente correlato a un’incompatibilità del plugin con Ruby 3.1.
Quel plugin causa l’interruzione della ricerca e genera l’errore 500.
Tuttavia, anche l’esecuzione di PostgreSQL 14+ interromperà la ricerca, ma in modo più subdolo, poiché molti risultati che verrebbero restituiti su pg13 non verranno restituiti su pg14+.
Quindi @kinetiksoft può rimuovere il plugin e ricostruire per evitare che la ricerca generi errori, ma non funzionerà comunque normalmente a causa della versione di pg.
Hai controllato la documentazione sull’esecuzione di PostgreSQL esterno? Si trova qui su Meta, non su github. Tutta la documentazione è visibile su Documentation - Discourse Meta
Mi dispiace a tutti! Il plugin delle risposte private stava effettivamente compromettendo la ricerca (o: Ruby 3.1 stava compromettendo il plugin).
Ora funziona di nuovo.