Erro 500 na página de categoria e na página inicial após atualização para 2.6

Olá,

Acabei de atualizar meu fórum (que estava em funcionamento desde 2017) para a versão 2.6 (a partir da 2.4).
Durante a atualização, notei que o PostgreSQL 9.5 foi substituído pelo PostgreSQL 12.

A operação de reconstrução foi concluída sem erros, mas estou recebendo um erro 500 na página inicial (ou uma mensagem de “ops”).
O mesmo erro ocorre na página de categorias.
O painel de administração está funcionando, o perfil do usuário está funcionando, a lista de usuários está funcionando e um post individual também está funcionando.
Porém, o recurso “top referidos” no painel de administração não está funcionando.

Não tenho ideias de como resolver isso.
Muito obrigado.

Alguns plugins instalados?

Há algo em /logs?

Você está certo, tenho o mesmo erro muitas e muitas vezes em /logs

NoMethodError (método hex não definido para 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’

Infelizmente, ir para o modo de segurança e desativar tudo não resolveu o problema.
Ainda tenho o erro.

Tenho esse erro muitas e muitas vezes nos logs:

NoMethodError (método hex não definido para 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 no painel de administração, algumas métricas (Tópicos Mais Referenciados) geram um erro:
“Desculpe, a solicitação levou muito tempo”

Já vi isso acontecer uma vez; o problema era que as imagens das categorias estavam ausentes. O Discourse tenta obter suas dimensões e falha.

Você pode tentar remover as imagens das categorias.

Tentei restaurar, mas ocorreu um erro:

[2020-08-27 10:06:41] Pausando o sidekiq…
[2020-08-27 10:06:41] Aguardando até 60 segundos para que o Sidekiq termine de executar os jobs…
[2020-08-27 10:38:40] EXCEÇÃO: ERRO: deadlock detectado
DETALHE: O processo 594 está aguardando um AccessExclusiveLock na relação 1113165 do banco de dados 16569; bloqueado pelo processo 1617.
O processo 1617 está aguardando um AccessShareLock na relação 1113221 do banco de dados 16569; bloqueado pelo processo 594.
DICA: Consulte o log do servidor para obter detalhes da consulta.
CONTEXTO: Instrução SQL “ALTER TABLE public.categories SET SCHEMA backup;”
PL/pgSQL função inline_code_block linha 11 em EXECUTE

Não temos imagem de categoria :frowning:

Hmm :thinking:
Talvez seja o flair do grupo?

Como saber se o problema vem do flair do grupo e como resolvê-lo?
Muito obrigado.

Tente remover ou reenviar o emblema de avatar do grupo em qualquer grupo e veja se isso resolve o problema.

Isso resolveu, @michaeld! Bom trabalho. @Olivier_Baillon, você pode marcar a postagem de Michael como a solução!

Se mais alguém tiver isso, faça algo como:

cd /var/discourse
./launcher enter app
rails c
Group.all.pluck(:id,:flair_icon,:flair_upload_id)
# para os grupos que têm `flair_upload_id` algo como
g=Group.find(GROUP_ID_FROM_THE_LIST) # isso é o id, não flair_upload_id
g.flair_upload
g.save

Existem maneiras mais elegantes, mas se você tiver apenas alguns, isso deve ajudar a começar.

Obrigado @michaeld e @pfaffman
Eu nunca teria encontrado isso sozinho.
Muito obrigado