Error 500 sulla pagina della categoria e sulla homepage dopo l'aggiornamento a 2.6

Ciao,

Ho appena aggiornato il mio forum (in funzione dal 2017) alla versione 2.6 (da 2.4).
Durante l’aggiornamento ho notato che PostgreSQL 9.5 è stato sostituito da PostgreSQL 12.

L’operazione di ricostruzione è terminata senza errori, ma ricevo un errore 500 sulla home page (o un messaggio “oops”).
Lo stesso errore si verifica sulla pagina delle categorie.

L’area amministrativa funziona, il profilo utente funziona, l’elenco degli utenti funziona e un singolo post funziona.
Invece, la sezione “Migliori referenti” nell’area amministrativa non funziona.

Non ho idee su come risolvere il problema.
Grazie mille.

È installato qualche plugin?

C’è qualcosa in /logs?

Hai ragione, ho lo stesso errore molte volte in /logs

NoMethodError (metodo hex non definito per 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’

Purtroppo, andare in modalità provvisoria e disattivare tutto non ha risolto il problema.
Ho ancora l’errore.

Ricevo spesso questo errore nei log:

NoMethodError (metodo hex non definito per 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:

E nella dashboard di amministrazione, alcune metriche (Argomenti con più riferimenti) restituiscono un errore:
“Spiacente, la richiesta ha richiesto troppo tempo”

L’ho già visto una volta: il problema era che mancavano le immagini delle categorie. Discourse cerca di recuperarne le dimensioni e fallisce.

Prova a rimuovere eventuali immagini delle categorie.

Ho provato a ripristinare, ma ho riscontrato un errore:

[2020-08-27 10:06:41] In pausa sidekiq…
[2020-08-27 10:06:41] In attesa fino a 60 secondi che Sidekiq completi l’esecuzione dei lavori…
[2020-08-27 10:38:40] ECCEZIONE: ERRORE: deadlock rilevato
DETTO: Il processo 594 attende un AccessExclusiveLock sulla relazione 1113165 del database 16569; bloccato dal processo 1617.
Il processo 1617 attende un AccessShareLock sulla relazione 1113221 del database 16569; bloccato dal processo 594.
SUGGERIMENTO: Consultare il log del server per i dettagli della query.
CONTESTO: Istruzione SQL “ALTER TABLE public.categories SET SCHEMA backup;”
PL/pgSQL funzione inline_code_block riga 11 in EXECUTE

Non abbiamo un’immagine per la categoria :frowning:

Hmm :thinking:
Forse il flair del gruppo?

Come capire se il problema deriva dal gruppo flair e come risolverlo?
Grazie mille

Prova a rimuovere o ricaricare il flair dell’avatar del gruppo da qualsiasi gruppo e vedi se risolve il problema.

Ecco fatto, @michaeld! Ottimo lavoro. @Olivier_Baillon, puoi contrassegnare il post di Michael come soluzione!

Se qualcun altro ha questo problema, puoi procedere in questo modo:

cd /var/discourse
./launcher enter app
rails c
Group.all.pluck(:id,:flair_icon,:flair_upload_id)
# per i gruppi che hanno `flair_upload_id` qualcosa come
g=Group.find(GROUP_ID_FROM_THE_LIST) # quello è l'id, non flair_upload_id
g.flair_upload
g.save

Ci sono modi più eleganti, ma se ne hai solo pochi questo dovrebbe aiutarti a iniziare.

GRAZIE @michaeld e @pfaffman
Non ci sarei mai arrivato da solo.
Grazie mille