Error 500 en la página de categoría y página de inicio después de la actualización a 2.6

Hola,

Acabo de actualizar mi foro (que funciona desde 2017) a la versión 2.6 (desde la 2.4).
Durante la actualización, noté que PostgreSQL 9.5 ha sido reemplazado por PostgreSQL 12.

La operación de reconstrucción finalizó sin errores, pero tengo un error 500 en la página de inicio (o un mensaje de “oops”).
El mismo error aparece en la página de categorías.
El panel de administración funciona, el perfil de usuario funciona, la lista de usuarios funciona y un solo mensaje funciona.
Sin embargo, la sección “Top referidos” en el panel de administración no funciona.

No tengo idea de cómo solucionar esto.
Muchas gracias.

¿Hay algún plugin instalado?

¿Algo en /logs?

Tienes razón, he tenido el mismo error muchas veces en /logs

NoMethodError (método hex no 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’

Desafortunadamente, ir al modo seguro y desactivar todo no resuelve el problema.
Sigo teniendo el error.

He encontrado este error muchas veces en los registros:

NoMethodError (método hex no definido para nil:NilClass) app/models/upload.rb:180 en base62_sha1 app/models/upload.rb:174 en short_path app/models/upload.rb:146 en short_path app/models/group.rb:

Y en el panel de administración, algunas métricas (Temas más referidos) dan un error: “lo sentimos, la solicitud ha tardado demasiado”

He visto esto una vez; el problema era que faltaban las imágenes de las categorías. Discourse intenta obtener sus dimensiones y falla.

Podrías intentar eliminar cualquier imagen de categoría.

Intenté restaurar pero tengo un error:

[2020-08-27 10:06:41] Pausando sidekiq…
[2020-08-27 10:06:41] Esperando hasta 60 segundos a que Sidekiq termine de ejecutar trabajos…
[2020-08-27 10:38:40] EXCEPCIÓN: ERROR: deadlock detectado
DETALLE: El proceso 594 espera un AccessExclusiveLock en la relación 1113165 de la base de datos 16569; bloqueado por el proceso 1617.
El proceso 1617 espera un AccessShareLock en la relación 1113221 de la base de datos 16569; bloqueado por el proceso 594.
SUGERENCIA: Consulte el registro del servidor para obtener detalles de la consulta.
CONTEXTO: Sentencia SQL “ALTER TABLE public.categories SET SCHEMA backup;”
PL/pgSQL función inline_code_block línea 11 en EXECUTE

No tenemos una imagen para la categoría :frowning:

Hmm :thinking:
¿Quizás el distintivo del grupo?

¿Cómo saber si el problema proviene de la insignia del grupo y cómo solucionarlo?
Muchas gracias.

Intenta eliminar o volver a subir el distintivo de avatar del grupo en cualquier grupo y verifica si eso resuelve el problema.

¡Eso fue todo, @michaeld! Buen trabajo. @Olivier_Baillon, ¡puedes marcar el mensaje de Michael como la solución!

Si alguien más tiene este problema, harías algo como:

cd /var/discourse
./launcher enter app
rails c
Group.all.pluck(:id,:flair_icon,:flair_upload_id)
# para los grupos que tienen `flair_upload_id` algo como
g=Group.find(GROUP_ID_FROM_THE_LIST) # eso es id, no flair_upload_id
g.flair_upload
g.save

Hay formas más elegantes, pero si solo tienes unos pocos, esto debería ayudarte a empezar.

GRACIAS @michaeld y @pfaffman
Nunca lo habría encontrado yo mismo.
Muchas gracias