Error 500 en la bandeja de entrada de mensajes de usuario

¡Hola,

Estamos experimentando un comportamiento muy extraño, pero actualmente solo con un usuario al abrir la bandeja de entrada de mensajes.

Ejecutamos Discourse en Docker sobre Apache con ProxyPass. Discourse 2.6.0.beta3.

Ese usuario no puede desplegar el panel de mensajes; aparece la nota “No Content” (o lo que sea el original en inglés de “Keine Inhalte”) — estamos usando de.DE :wink:

Y ahora, al hacer clic nuevamente en el icono de mensajes, o mejor dicho, cuando el usuario intenta abrir la bandeja de entrada de mensajes, obtenemos un error 500.

La página dice: "error al cargar: [/topics/private-messages/firstname.name.json]".

Esto solo ocurre con un usuario específico. Los demás no tienen este problema.

Si el usuario intenta https://domain.de/u/firstname.name/messages/sent o https://domain.de/u/firstname.name/messages/group/any, todo funciona bien.

Pero https://domain.de/u/firstname.name/messages/ o https://domain.de/u/firstname.name/messages/inbox dan error 500.

Hemos intentado cambiar los roles de este usuario, realizar actualizaciones y reconstruir la aplicación mediante el launcher. Desafortunadamente, sigue dando un error 500 al abrir la bandeja de entrada.

¿Alguien ha tenido este comportamiento alguna vez? ¿Qué podemos hacer? ¿Existe alguna forma de reconstruir los mensajes? ¿O tenemos que eliminarlos?

Por favor, dennos algún consejo; actualmente estamos perdidos.

¡Gracias de antemano!}

Ayer vi algo similar, pero con un nombre de grupo en /topics/private-messages-group. Resultó que había una búsqueda sensible a mayúsculas y minúsculas, y el nombre del grupo en la URL estaba todo en minúsculas.

¿Podrías comprobar si el comportamiento cambia si modificas las mayúsculas y minúsculas en la URL para que coincidan con las del nombre de usuario? (por ejemplo, algo como https://domain.de/u/Firstname.Name/messages)

5 Me gusta

Hola Richard,

¡gracias por la respuesta rápida!

He intentado cambiar las mayúsculas y minúsculas, como sugeriste:

  • …Firstname.Name…

También probé con otras combinaciones:

  • …firstname.Name…
  • …Firstname.name…
  • …FIRSTNAME.NAME…

Pero el error sigue siendo el mismo.

Probé https://domain.de/u/Firstname.Name/messages/sent y otras rutas, las cuales funcionaron perfectamente, como antes.

¿Tienes alguna sugerencia al respecto?

Te estaría muy agradecido por tu ayuda.

Esto ya era una apuesta arriesgada, así que temo que ni siquiera pueda darte ningún indicio al respecto.

2 Me gusta

No hay problema, nunca se sabe, ¿verdad? Estoy agradecido con cualquier ayuda.

¿Quizás alguien más pueda aportar algo?
¡Gracias!

Hola,

Espero de verdad que alguien pueda ayudarnos con nuestro problema. Tal como sugiere @RGJ, hemos descubierto que el asunto parece ser más profundo, pero aún no hemos logrado resolver el problema de las bandejas de entrada inaccesibles de un único usuario. Lamentablemente, hacemos un uso muy intensivo de los mensajes. Estamos organizados en pequeños grupos que a menudo necesitan comunicarse de forma no pública. Por lo tanto, los mensajes son una forma perfecta de hacerlo.

Si necesitas más información o registros, dímelo; indícame qué necesitas y lo pegaré aquí.

Gracias a todos por los consejos adicionales y por seguir leyendo :wink:

¿Has revisado los registros de errores a través del navegador web cuando iniciaste sesión como administrador?

@codinghorror muchas gracias por tu ayuda adicional.

De hecho, hay una salida de error bastante larga relacionada con esta solicitud. Pero no puedo resolverla.

Intento incluir aquí la información de registro:

Mensaje (21 copias reportadas)

NoMethodError (método `downcase` no definido para nil:NilClass)
app/models/global_setting.rb:107:in `s3_bucket_name'
app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'
lib/url_helper.rb:90:in `cook_url'
app/models/topic.rb:126:in `image_url'
app/serializers/listable_topic_serializer.rb:34:in `image_url'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/application_controller.rb:451:in `serialize_data'
app/controllers/application_controller.rb:460: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:177:in `message_route'
app/controllers/list_controller.rb:164:in `block in generate_message_route'
app/controllers/application_controller.rb:351:in `block in with_resolved_locale'
app/controllers/application_controller.rb:351: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:23: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'

Rastreo

app/models/global_setting.rb:107:in `s3_bucket_name'
app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'
lib/url_helper.rb:90:in `cook_url'
app/models/topic.rb:126:in `image_url'
app/serializers/listable_topic_serializer.rb:34:in `image_url'
(eval):10:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:124:in `block in serialize'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `map'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `serialize'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:368:in `block in include_associations!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:367:in `each_key'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:367:in `include_associations!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:362:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:343:in `as_json'
app/controllers/application_controller.rb:451:in `serialize_data'
app/controllers/application_controller.rb:460:in `render_serialized'
lib/topic_list_responder.rb:16:in `block (2 levels) in respond_with_list'
actionpack (6.0.3.3) lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
lib/topic_list_responder.rb:9:in `respond_with_list'
app/controllers/list_controller.rb:177:in `message_route'
app/controllers/list_controller.rb:164:in `block in generate_message_route'
actionpack (6.0.3.3) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.0.3.3) lib/abstract_controller/base.rb:195:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:112:in `block in run_callbacks'
app/controllers/application_controller.rb:351:in `block in with_resolved_locale'
i18n (1.8.5) lib/i18n.rb:313:in `with_locale'
app/controllers/application_controller.rb:351:in `with_resolved_locale'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:139:in `run_callbacks'
actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `block in instrument'
activesupport (6.0.3.3) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `instrument'
actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:32:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord (6.0.3.3) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (6.0.3.3) lib/abstract_controller/base.rb:136:in `process'
actionview (6.0.3.3) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (2.1.0) lib/mini_profiler/profiling_methods.rb:78:in `block in profile_method'
actionpack (6.0.3.3) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (6.0.3.3) lib/action_controller/metal.rb:254:in `dispatch'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:49:in `block in serve'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:834:in `call'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.3) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.3) lib/rack/head.rb:12:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:336:in `call'
rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/cookies.rb:648:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster (2.9.4) lib/logster/middleware/reporter.rb:43:in `call'
railties (6.0.3.3) lib/rails/rack/logger.rb:37:in `call_app'
railties (6.0.3.3) lib/rails/rack/logger.rb:28:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/request_id.rb:27:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
rack (2.2.3) lib/rack/method_override.rb:24:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/host_authorization.rb:76:in `call'
rack-mini-profiler (2.1.0) lib/mini_profiler/profiler.rb:235:in `call'
message_bus (3.3.2) lib/message_bus/rack/middleware.rb:61:in `call'
lib/middleware/request_tracker.rb:176:in `call'
railties (6.0.3.3) lib/rails/engine.rb:527:in `call'
railties (6.0.3.3) lib/rails/railtie.rb:190:in `public_send'
railties (6.0.3.3) lib/rails/railtie.rb:190:in `method_missing'
rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.3) lib/rack/urlmap.rb:58:in `each'
rack (2.2.3) lib/rack/urlmap.rb:58:in `call'
unicorn (5.7.0) lib/unicorn/http_server.rb:632:in `process_client'
unicorn (5.7.0) lib/unicorn/http_server.rb:728:in `worker_loop'
unicorn (5.7.0) lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
unicorn (5.7.0) lib/unicorn/http_server.rb:144:in `start'
unicorn (5.7.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'

ENTORNO

hostname config-app
process_id 273
application_version 891987a2843de3ebeed412e01fd6b8064dac3917
HTTP_HOST sub.domain..de
REQUEST_URI /topics/private-messages/firstname.name.json
REQUEST_METHOD GET
HTTP_USER_AGENT Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:81.0) Gecko/20100101 Firefox/81.0
HTTP_ACCEPT application/json, text/javascript, /; q=0.01
HTTP_REFERER https://sub.domain.de/u/firstname.name/messages
HTTP_X_FORWARDED_FOR 2003:d6:9720:2500:c4b4:5a78:fb34:fbe8, unix:
HTTP_X_REAL_IP unix:
username firstname.name
time 8:38 pm

Bueno, esto es mucho y no tengo ni idea de por dónde empezar a buscar. Espero que esto pueda arrojar algo de luz sobre nuestro problema. Si necesitas más información, por favor házmelo saber.

Muchas gracias por echar un vistazo a esto.
GRACIAS

1 me gusta

¿Es inválido tu s3_bucket_name?

Gracias por la respuesta,

Respuesta corta: No lo sé, creo que no.

El nombre del bucket de S3 parece estar relacionado con los sistemas de almacenamiento S3 de Amazon, ¿verdad? Y si es así, probablemente no pueda ser inválido. Nunca configuramos uno. Estamos ejecutando Discourse en contenedores Docker detrás de un proxy inverso en un dominio de Apache.

Además, ¿no debería provocar muchos más fallos si el bucket de S3 fuera inválido, y no solo una ruta de un solo usuario?

Por favor, no me malinterpretes. Es posible que esté totalmente en el camino equivocado. Como dije, no estoy muy seguro de qué es exactamente este s3_bucket_name o, dicho de otro modo, por qué debería configurarse (si entendí bien).

¿Puedo consultarlo en el panel de administración o necesito revisar el docker-compose?

Disculpa el retraso… diferentes zonas horarias y horarios laborales… ya sabes.

Pero ¡muchas gracias por echarle un vistazo!

Al revisar la configuración, veo que todas las opciones de S3 están vacías. ¿Es esto correcto? ¿No usamos los buckets de SE? ¿O me equivoco?

¿Habilitaste la configuración del sitio secure media?

No, no realmente, según mi comprensión de la configuración. Aún no hemos activado la opción de correo electrónico de medios seguros.

Como no hemos experimentado este error desde el principio, ¿podría ser causado por una imagen incrustada que se envió por correo?

¿Debería intentar desactivar esta opción?

Pero como dije

Entonces, ¿los medios seguros no deberían funcionar si no se han configurado credenciales de S3 en absoluto, verdad?

2 Me gusta

¿Aún hay alguien aquí que tenga alguna idea sobre qué podríamos intentar?

Bueno, el problema es que tenemos este inconveniente con uno de nuestros administradores, y eso hace que sea bastante difícil comunicarse al tener un administrador que no puede responder a los mensajes ni verlos.

Por ahora, sería una solución si el buzón de mensajes volviera a estar accesible. ¿Existe algún truco o posibilidad de reconstruir una sola cuenta de usuario o, no sé, eliminar todos los mensajes de un solo usuario? Así podríamos empezar de cero con esa cuenta.

Además, incluso pensé en eliminar esta cuenta, pero, por lo que entendí, no es posible eliminar usuarios. ¿Qué más podríamos intentar para crear una nueva cuenta para este usuario y que pueda participar de nuevo?

Por favor, hazme saber qué ideas tienes; estoy perdido aquí.

Gracias de antemano.

Lo siento, necesito preguntar de nuevo. Mientras sigamos teniendo este problema:

¿Querías preguntar si habilitamos secure media como parte del problema o de la solución?

No tenemos esta opción activada. ¿Deberíamos activarla?

¿O deberíamos dejarlo como está y esperar otras indicaciones para solucionarlo?

1 me gusta

Hola,
parece que estoy enfrentando un problema similar aquí. Los mensajes para un solo usuario, hasta donde sabemos, no están funcionando.
¿Alguna otra idea de qué podríamos revisar??

1 me gusta

Según Jay:

Yo intentaría reemplazar la condición where("user_id > 0") por algo como where("user_id = el-id-de-tu-usuario").

Sobre por qué está sucediendo esto: mi apuesta es que es algo localizado. Yo mismo a veces tengo problemas con comillas, acentos, etc. :wink:

1 me gusta

Mhm, esto suena como darle una oportunidad.

Pensando en la localización, me pregunto si el comportamiento debería cambiar al modificar la configuración de la interfaz del usuario. ¿Qué opinas sobre eso?

Intentaré la solución de eliminación en los próximos días.

Gracias por tu ayuda.

Mientras tanto, hemos reflexionado un poco. Quizás alguien más tenga alguna aportación que compartir.

Otra cosa extraña es que, en el área del panel de mensajes, al hacer clic en el icono del usuario y luego en el sobre, deberían mostrarse todos los mensajes recientes, ¿verdad? En el caso de nuestros usuarios que no pueden abrir la bandeja de entrada, no aparece nada.

Quizás alguien tenga alguna idea al respecto. Cuando podamos afirmar con certeza que deberían listarse algunas entradas.

¿Quizás esto ayude a generar algunas ideas en cualquier dirección?

Y otra línea de pensamiento. Todavía tenemos algún tipo de error SSL en nuestro sitio. Como mencioné, ejecutamos Discourse con Docker detrás de un proxy inverso en Apache. Sin embargo, el dominio ya cuenta con un certificado SSL válido emitido por Let’s Encrypt.

Aún así, aparecen advertencias de contenido mixto en el sitio. De alguna manera, los logotipos estándar y los favicons se sirven mediante HTTP. Hemos eliminado las personalizaciones de marca con el fin de eliminar los errores de contenido mixto.

¿Existe alguna posibilidad de que esto pueda estar causando el problema?

Cuando accedimos recientemente a la ruta JSON https://sub.domain.de/topics/private-messages/firstnamename.json

El resultado JSON es:

{
	"status":500,
	"error":"Internal Server Error"
}

Al revisar más de cerca los registros, apareció lo siguiente:

NoMethodError (undefined method `downcase' for nil:NilClass)
app/models/global_setting.rb:107:in `s3_bucket_name'
app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'
lib/url_helper.rb:90:in `cook_url'
app/models/topic.rb:126:in `image_url'
app/serializers/listable_topic_serializer.rb:34:in `image_url'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/application_controller.rb:454:in `serialize_data'
app/controllers/application_controller.rb:463: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:177:in `message_route'
app/controllers/list_controller.rb:164:in `block in generate_message_route'
app/controllers/application_controller.rb:354:in `block in with_resolved_locale'
app/controllers/application_controller.rb:354: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:354:in `call'
config/initializers/100-quiet_logger.rb:23: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'

Dado que no estamos utilizando medios seguros ni S3, sigo tropezando con estas entradas:

app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'

¿Existe alguna posibilidad de que esto pueda estar causado por un error de contenido mixto en el interior?

Gracias por seguir aguantando.

1 me gusta