Seit unserem Update auf 3.1.0 heute funktioniert unsere Suche nicht mehr.
Unser Sysadmin-Team hat ein Problem identifiziert und uns dieses Protokoll zur Verfügung gestellt, das besagt, dass es sich um einen Anwendungsfehler handelt.
Haben andere dieses Problem auch und was könnten Hinweise sein, damit wir das Problem selbst lösen können? Ich sehe, dass die Suche auf Discourse Meta perfekt funktioniert.
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)
Unsere Suche ist vollständig fehlerhaft, wenn sie gegen PostgreSQL 14 ausgeführt wird, weshalb wir für alle, die unserer Standardinstallation folgen, weiterhin PostgreSQL 13 ausliefern.
Wir werden es irgendwann beheben, da wir eines Tages auf PostgreSQL 15 (oder 16) upgraden werden, aber es kann eine Weile dauern.
Danke. Wir untersuchen, wie das passiert sein könnte, falls wir zuvor eine andere PostgreSQL-Version hatten. Wir werden uns bei Ihnen melden, sobald wir das Problem identifiziert haben.
Wir sehen hier die Anforderung “Postgres 13+”. Könnte ich mich irren, wenn ich Ihrem Team vorschlage, einen Hinweis hinzuzufügen, dass Discourse nur Versionen 13.X unterstützt? Vielleicht wäre ein expliziter Hinweis, dass Versionen 14/15/… nicht unterstützt werden, in Fällen wie unserem ebenfalls hilfreich.
Wie Sie sehen, hatten wir Version 14 mindestens seit Dezember und die stabile Version von Discourse schon seit Monaten installiert. Kürzlich sind wir zur Version tests-passed zurückgekehrt, die Suche funktionierte wie erwartet. Heute haben wir von 2.9.0.beta14 auf 3.1.0.beta1 aktualisiert und jetzt ist es kaputt.
Unklar, aber das war in meinem Fall das Problem (gleiche Symptome – wenn auch mit PostgreSQL13)
Ich bin sicher, Richard wird es bald beheben, in der Zwischenzeit ist ein Fork und eine einfache Bearbeitung eine Lösung.
Oh. Mist. Ich habe eine Website, die ich vor einiger Zeit versehentlich auf PG14 aktualisiert habe und dachte, es wäre in Ordnung.
Ich habe gerade ein paar Suchen durchgeführt und sie waren nicht offensichtlich furchtbar kaputt. Und die Website ist größtenteils auf Chinesisch, also könnte ich es sowieso nicht wirklich sagen.
Wie kaputt ist es und wie schwer wird es sein, es zu reparieren?
Der Safe Mode wirkt sich nur auf die Client-Seite aus. Dieser Fehler tritt auf dem Server auf. Um zu prüfen, ob der Fehler mit dem Private Replies Plugin zusammenhängt, müssen Sie dieses Plugin vollständig deinstallieren.
Dieser Fehler scheint wahrscheinlich mit einer Ruby 3.1 Plugin-Inkompatibilität zusammenzuhängen.
Dieses Plugin führt zu Suchproblemen und löst den Fehler 500 aus.
Das Ausführen von PostgreSQL 14+ führt ebenfalls zu Suchproblemen, allerdings auf subtilere Weise, da viele Ergebnisse, die unter pg13 zurückgegeben würden, unter pg14+ nicht mehr zurückgegeben werden.
Daher kann @kinetiksoft das Plugin entfernen und neu erstellen, damit die Suche nicht fehlschlägt, aber sie wird aufgrund der pg-Version immer noch nicht normal funktionieren.
Ich kann jetzt bestätigen, dass die Suche wie erwartet funktioniert, seit wir das Discourse Private Replies Plugin entfernt haben.
Auf der Serverseite wurden keine Änderungen vorgenommen, PostgreSQL ist immer noch 14.6-1, aber wir werden uns nächste Woche mit Downgrade-Optionen befassen.
Vielen Dank an alle, Sie haben unsere Suchfunktionalität für dieses Wochenende gerettet.
P.S. Ich bitte das Discourse @ github Team höflich, in der offiziellen Dokumentation einen Hinweis zur PostgreSQL-Version hinzuzufügen:
Haben Sie die Dokumentation zum Ausführen von externem PostgreSQL überprüft? Sie ist hier auf Meta, nicht auf GitHub. Die gesamte Dokumentation ist unter Documentation - Discourse Meta sichtbar
Tut mir leid allerseits! Das Private Replies Plugin hat die Suche tatsächlich gestört (oder: Ruby 3.1 hat das Plugin gestört).
Es funktioniert jetzt wieder.