Error 500 auf Kategorieseite und Homepage nach Upgrade auf 2.6

Hallo,

ich habe mein Forum (seit 2017 in Betrieb) auf Version 2.6 (von 2.4) aktualisiert.
Während des Updates habe ich festgestellt, dass PostgreSQL 9.5 durch PostgreSQL 12 ersetzt wurde.

Der Neuaufbau-Vorgang wurde ohne Fehler abgeschlossen, aber ich erhalte auf der Startseite einen Fehler 500 (oder eine Oops-Meldung).
Derselbe Fehler tritt auf der Kategorien-Seite auf.
Das Admin-Interface funktioniert, das Benutzerprofil funktioniert, die Benutzerliste funktioniert, ein einzelner Beitrag funktioniert.
Die Top-Referenzen im Admin-Bereich funktionieren jedoch nicht.

Ich habe keine Idee, wie ich das lösen soll.
Vielen Dank

Ist ein Plugin installiert?

Etwas in /logs?

Du hast recht, ich habe dieses Fehlerbild schon sehr oft in /logs gesehen:

NoMethodError (undefined method hex' for nil:NilClass) app/models/upload.rb:180:in base62_sha1’
app/models/upload.rb:174:in short_path' app/models/upload.rb:146:in short_path’
app/models/group.rb:767:in flair_url' (eval):5:in _fast_attributes’
lib/freedom_patches/ams_include_without_root.rb:54:in include!' lib/freedom_patches/ams_include_without_root.rb:57:in include!’
lib/freedom_patches/ams_include_without_root.rb:57:in include!' app/controllers/application_controller.rb:440:in serialize_data’
app/controllers/application_controller.rb:449:in render_serialized' lib/topic_list_responder.rb:16:in block (2 levels) in respond_with_list’
lib/topic_list_responder.rb:9:in respond_with_list' app/controllers/list_controller.rb:102:in block (2 levels) in class:ListController
app/controllers/list_controller.rb:107:in public_send' app/controllers/list_controller.rb:107:in block (2 levels) in class:ListController
app/controllers/application_controller.rb:340:in block in with_resolved_locale' app/controllers/application_controller.rb:340:in with_resolved_locale’
lib/middleware/omniauth_bypass_middleware.rb:68:in call' lib/content_security_policy/middleware.rb:12:in call’
lib/middleware/anonymous_cache.rb:336:in call' config/initializers/100-quiet_logger.rb:19:in call’
config/initializers/100-silence_logger.rb:31:in call' lib/middleware/enforce_hostname.rb:22:in call’
lib/middleware/request_tracker.rb:176:in `call’

Leider löst der Wechsel in den abgesicherten Modus und das Deaktivieren aller Erweiterungen das Problem nicht.
Ich habe weiterhin den Fehler.

Ich habe dieses Fehler in den Logs sehr oft:

NoMethodError (undefined method hex' for nil:NilClass) app/models/upload.rb:180:in base62_sha1’ app/models/upload.rb:174:in short_path' app/models/upload.rb:146:in short_path’ app/models/group.rb:

Und im Admin-Dashboard verursachen einige Metriken (Top-Referierte Themen) einen Fehler:
„Entschuldigung, die Anfrage hat zu lange gedauert"

Ich habe das schon einmal gesehen. Das Problem bestand darin, dass die Kategorienbilder fehlten. Discourse versucht, deren Abmessungen zu ermitteln, und schlägt fehl.

Versuchen Sie, alle Kategorienbilder zu entfernen.

Ich habe versucht, wiederherzustellen, aber es ist ein Fehler aufgetreten:

[2020-08-27 10:06:41] Sidekiq wird pausiert…
[2020-08-27 10:06:41] Es wird bis zu 60 Sekunden gewartet, bis Sidekiq die laufenden Jobs abgeschlossen hat…
[2020-08-27 10:38:40] AUSNAHME: FEHLER: Deadlock erkannt
DETAIL: Prozess 594 wartet auf AccessExclusiveLock für Relation 1113165 der Datenbank 16569; blockiert durch Prozess 1617.
Prozess 1617 wartet auf AccessShareLock für Relation 1113221 der Datenbank 16569; blockiert durch Prozess 594.
HINWEIS: Siehe Server-Protokoll für Abfrage-Details.
KONTEXT: SQL-Anweisung „ALTER TABLE public.categories SET SCHEMA backup;"
PL/pgSQL-Funktion inline_code_block, Zeile 11 bei EXECUTE

Wir haben kein Kategorienbild :frowning:

Hmm :thinking:
Vielleicht Gruppen-Flair?

Wie kann man feststellen, ob das Problem vom Gruppen-Flair stammt, und wie löst man es?
Vielen Dank.

Versuchen Sie, das Gruppen-Avatar-Flair aus allen Gruppen zu entfernen oder neu hochzuladen, und prüfen Sie, ob dies das Problem löst.

Das hat es gebracht, @michaeld! Gute Arbeit. @Olivier_Baillon, du kannst Michaels Beitrag als Lösung markieren!

Wenn jemand anderes das Problem hat, könnt ihr folgendermaßen vorgehen:

cd /var/discourse
./launcher enter app
rails c
Group.all.pluck(:id,:flair_icon,:flair_upload_id)
# Für die Gruppen, die eine `flair_upload_id` haben, etwa so:
g=Group.find(GROUP_ID_FROM_THE_LIST) # Das ist die ID, nicht flair_upload_id
g.flair_upload
g.save

Es gibt elegantere Wege, aber wenn es nur um ein paar Gruppen geht, sollte das ein guter Einstieg sein.

DANKE @michaeld und @pfaffman
Das wäre mir selbst nie eingefallen.
Vielen Dank