Erreur 500 sur la page de catégorie et la page d'accueil après la mise à niveau vers 2.6

Bonjour,

Je viens de mettre à jour mon forum (en fonctionnement depuis 2017) vers la version 2.6 (à partir de la 2.4).
Lors de la mise à jour, j’ai constaté que PostgreSQL 9.5 a été remplacé par PostgreSQL 12.

L’opération de reconstruction s’est terminée sans erreur, mais j’obtiens une erreur 500 sur la page d’accueil (ou un message « Oops »).
La même erreur apparaît sur la page des catégories.
L’administration fonctionne, le profil utilisateur fonctionne, la liste des utilisateurs fonctionne, un message individuel fonctionne.
Le classement des référents dans l’administration ne fonctionne pas.

Je n’ai aucune idée de comment résoudre ce problème.
Merci beaucoup.

Un plugin est-il installé ?

Quelque chose dans /logs ?

Vous avez raison, j’ai eu ce même erreur à de très nombreuses reprises dans /logs

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’

Malheureusement, passer en mode sans échec et désactiver tout ne résout pas le problème.
Je rencontre toujours l’erreur.

J’ai rencontré cette erreur de nombreuses fois dans les journaux :

NoMethodError (la méthode hex n’est pas définie pour 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:

Et dans le tableau de bord d’administration, certaines métriques (Top Referred Topics) génèrent une erreur : « Désolé, la requête prend trop de temps »

J’ai déjà rencontré ce problème : les images des catégories étaient manquantes. Discourse tente de récupérer leurs dimensions et échoue.

Vous pouvez essayer de supprimer les images des catégories.

J’ai tenté de restaurer, mais j’ai rencontré une erreur :

[2020-08-27 10:06:41] Mise en pause de Sidekiq…
[2020-08-27 10:06:41] En attente de la fin des tâches en cours d’exécution par Sidekiq pendant 60 secondes maximum…
[2020-08-27 10:38:40] EXCEPTION : ERREUR : deadlock détecté
DÉTAIL : Le processus 594 attend un AccessExclusiveLock sur la relation 1113165 de la base de données 16569 ; bloqué par le processus 1617.
Le processus 1617 attend un AccessShareLock sur la relation 1113221 de la base de données 16569 ; bloqué par le processus 594.
ASTUCE : Consultez le journal du serveur pour les détails de la requête.
CONTEXTE : Instruction SQL “ALTER TABLE public.categories SET SCHEMA backup;”
Fonction PL/pgSQL inline_code_block ligne 11 à l’exécution EXECUTE

Nous n’avons pas d’image de catégorie :frowning:

Hmm :thinking:
Peut-être le flair du groupe ?

Comment savoir si le problème vient du groupe de flaire et comment le résoudre ?
Merci beaucoup

Essayez de supprimer ou de téléverser à nouveau l’avatar de groupe de n’importe quel groupe et voyez si cela résout le problème.

C’est réglé, @michaeld ! Bon travail. @Olivier_Baillon, vous pouvez marquer le message de Michael comme la solution !

Si quelqu’un d’autre rencontre ce problème, voici ce que vous pouvez faire :

cd /var/discourse
./launcher enter app
rails c
Group.all.pluck(:id,:flair_icon,:flair_upload_id)
# pour les groupes ayant un `flair_upload_id` similaire à :
g=Group.find(GROUP_ID_FROM_THE_LIST) # il s'agit de l'ID, pas de flair_upload_id
g.flair_upload
g.save

Il existe des méthodes plus élégantes, mais si vous n’avez que quelques groupes, cela devrait vous permettre de démarrer.

MERCI @michaeld et @pfaffman
Je ne l’aurais jamais trouvé seul.
Merci beaucoup