Suche funktioniert nach dem Update auf 3.1.0.beta1 nicht mehr

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)
Screenshots des Problems



Das kann kein allgemeines Problem sein – bei mir funktioniert es einwandfrei. Bei mir auch (ich schätze, Meta ist auf dem neuesten Stand).

Was passiert, wenn du /safe-mode versuchst?

Leider funktioniert es auch im abgesicherten Modus nicht. Kein Design, kein Plugin-Modus.

Wir sehen, dass die Suche bei Themen/Beiträgen nicht funktioniert, aber bei Kategorien/Tags und Benutzern funktioniert.

Verwenden Sie eine externe PostgreSQL-Instanz? Wenn ja, welche Version?

Ja, wir verwenden die externe PostgreSQL. Die Version ist 14.6-1

1 „Gefällt mir“

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.

3 „Gefällt mir“

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.

1 „Gefällt mir“

Ob Sie zuvor 14 hatten, ist nicht wirklich relevant, Discourse ist nicht mit PostgreSQL 14 kompatibel. Das ist Ihr Problem.

1 „Gefällt mir“

Ich habe stattdessen die Dokumentation unter discourse/docs/INSTALL.md at main · discourse/discourse · GitHub geprüft, da die Cloud-Dokumentation überhaupt keine Serveranforderungen enthält.

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.

Gibt es eine Chance, dass Sie das Plugin für private Antworten verwenden?

4 „Gefällt mir“

Wir haben es installiert, es ist in den Admin-Einstellungen deaktiviert

Wir haben das Problem auch im abgesicherten Modus versucht und reproduziert. Sollte das überhaupt eine Rolle spielen?

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.

2 „Gefällt mir“

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?

2 „Gefällt mir“

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.

4 „Gefällt mir“

dann bin ich ziemlich zuversichtlich, dass es sich um execute(readonly_mode) im Plugin handelt (und keine Ahnung warum :sweat_smile: )

3 „Gefällt mir“

Sie haben vollkommen Recht, @Benjamin_D.

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.

4 „Gefällt mir“

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:

3 „Gefällt mir“

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

1 „Gefällt mir“

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.

5 „Gefällt mir“