Error 500 en la bandeja de entrada de mensajes de usuario

Esto solo se llama en cargas seguras. Mi suposición es que antes lo tenías configurado y, desde que lo has eliminado…

¿Qué devuelve esto?

./launcher enter app
rails c
> Upload.where('secure').count

cc @martin

(también tenemos un error de nomenclatura en site_setting.rb:157:in absolute_base_url. Debería llamarse s3_absolute_base_url)

1 me gusta

¡Hola Sam!

¡Muchas gracias por echar un vistazo a esto!

Por lo que sé, no activamos la función de carga segura. Pero como no soy el único administrador, no puedo estar seguro de ello. Y si lo entiendo bien, tu consulta debería devolver 0 si la función nunca se ha activado, ¿verdad? Bueno, es mucho más que 0 :wink: De hecho, son 235 :blush:

Esto devuelve:

[1] pry(main)> Upload.where('secure').count
=> 235
[2] pry(main)> 

¿Hay algo que pueda hacer para solucionarlo?

¿Debería desactivar la configuración de media segura: permitir imágenes incrustadas en correos electrónicos?

¿Vale la pena intentar activar media segura y luego desactivarla?

¡Muchísimas gracias por intentar ayudar aquí!

1 me gusta

Si actualmente no tienes la opción de medios seguros activada, no es necesario que la actives. Debe haberse activado en algún momento debido a la cantidad de subidas seguras que tienes. Intenta ejecutar la tarea rake uploads:secure_upload_analyse_and_update; esto revisará todas tus subidas y las marcará como seguras/no seguras según la configuración del sitio (si tienes los medios seguros desactivados, todas se marcarán como no seguras).

4 Me gusta

Hola Martin,

muchas gracias. Lo probaré esta noche.

Solo para asegurarme de que lo he entendido bien. Actualmente tenemos activada la opción:

¿Deberíamos activar también esta opción? ¿O esto no afecta al proceso de marcado?

Y solo para aclarar, después de ejecutar el comando rake, ¿tengo que reconstruir la aplicación? ¿O no es necesario, aunque quizás sea recomendable?

¡Muchas gracias!

Esta opción está habilitada de forma predeterminada, pero no tiene ningún efecto a menos que secure media esté activado.

No creo que sea necesario reconstruir la aplicación; lo he ejecutado en sitios en producción sin problemas.

1 me gusta

¡Muchas gracias!

Lo intentaré y te informaré mañana.

¡GRACIAS, GRACIAS!

1 me gusta

Estoy adivinando, pero el rastreo de la pila parece indicar que está intentando serializar una lista de mensajes, o una lista de información extraída de mensajes, y falla al intentar serializar una imagen en particular. La imagen es presumiblemente la imagen de perfil de un usuario. Solo una cuenta se ve afectada, por lo que tal vez la imagen defectuosa pertenece a un usuario que solo se comunicó con esta cuenta afectada.

Es posible que la construcción de la lista que falla sea para los N mensajes más recientes. ¿Podrías enviar N mensajes (con títulos de tema diferentes) a la cuenta afectada, de modo que la lista solo contenga mensajes válidos?

4 Me gusta

Martin, gracias de nuevo por el consejo.

Bueno, intenté ejecutar rake uploads:secure_upload_analyse_and_update, pero el resultado fue:

Esta tarea solo funciona para almacenamiento externo.

Así que intenté activar la opción activar medios seguros. Pero, desafortunadamente, o digamos que para evitar errores administrativos, esta opción solo puede activarse configurando buckets de Amazon S3. Y estoy absolutamente seguro de que nadie ha configurado S3 antes.

Por lo tanto, no puedo ejecutar el script de rake porque no tengo almacenamiento S3 disponible. Así que no puedo decir si tiene algún efecto en pry(main)> Upload.where('secure').count.

Me pregunto por qué todavía tenemos algunas cargas seguras si nunca activamos S3.

¿Alguna pista al respecto?

Pero de hecho,

Funcionó. Así que por ahora estoy bien. Aunque no tengo ni idea de por qué estamos experimentando este comportamiento. Me encantaría saber qué otra cosa podría ser la causa.

Gracias de antemano y por todo el tiempo que ya has dedicado.

Bueno, Ed_S, ¿qué puedo decir más que

MUCHÍSIMAS GRACIAS

De hecho, tu pequeña pista fue la clave. Solo escribí un nuevo mensaje y publiqué otra respuesta, y luego el error desapareció.

Aunque por el momento seas mi héroe, eso no te exime de futuras preguntas :wink: Espero que no te importe darme un poco más de comprensión sobre qué demonios ocurrió aquí.

En primer lugar, ayúdame a entender mejor cómo leer los registros. Quiero decir, ¡qué gran suposición la tuya! ¿Qué te llevó a pensar que un problema de serialización podría ser el culpable del fallo?

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'

¿Por qué no cook_url o, no sé, cualquier otra cosa?

En segundo lugar, ¿cuáles son tus recomendaciones? ¿Debo tener cuidado de volver a encontrarme con un problema así? ¿O quizás con otro usuario?

¿Crees que hay alguna forma de reducir el alcance para identificar qué mensaje, usuario o imagen podría ser el culpable aquí? ¿Existe alguna otra opción para revisar esto además de… hacer clic a través de los mensajes y esperar tener algún efecto en uno de los mensajes privados?

Lo curioso es que algunos administradores hicieron exactamente lo mismo, como escribir un nuevo mensaje (tema) a la cuenta afectada, y no experimentamos ningún otro comportamiento. De alguna manera, el último mensaje enviado por mí a la cuenta afectada fue lo que solucionó el problema.

Y por último, ¿puedo tener tu número de teléfono para futuros gritos de emergencia en caso de urgencia? ¡Solo bromeo! :wink:

Pero en serio, muchas gracias, muchísimas gracias, muchísimísimas gracias. Realmente estaba atascado aquí y estoy muy feliz de que nuestro usuario, como mencioné, uno de nuestros administradores, pueda volver a la normalidad. ¡Gracias, Ed_S!

2 Me gusta

:clap:
¡Muy buena suposición!

1 me gusta

Jaja, parece que tuve suerte. Lo interesante de un rastreo de pila es que va de lo específico a lo general; no es solo una lista de cosas, sino una imagen de las interacciones anidadas, desde el código general hasta los mecanismos específicos. Por eso, la idea de la ‘imagen’ me pareció interesante, ya que en la lista de mensajes solo hay imágenes de perfil. Además, creo que hemos visto problemas extraños con las imágenes de perfil antes.

Pero no tengo ni idea de por qué el código está consultando el almacenamiento seguro si nunca lo has utilizado.

Sospecho que una consulta a la base de datos podría listar las imágenes que se recuperarían en este caso, pero no sé cómo podrías encontrar el perfil problemático. Si, de hecho, esa es la historia detrás del rastreo de pila.

2 Me gusta

Existe una tarea de rake para solucionar esto:

./launcher enter app
rake uploads:secure_upload_analyse_and_update

Recomiendo que ejecutes esa tarea.

1 me gusta

Hola Sam,

muchas gracias por seguir teniendo esto en tu lista. Estoy muy agradecido por recibir más ayuda para solucionar esto correctamente.

Bueno, intenté lo siguiente:

Pero, de hecho, se mostró el mismo mensaje: que esto solo funciona para almacenamiento S3 externo y, mientras no tengamos uno configurado, me siento un poco perdido.

Aquí está mi consola:

./launcher enter app
rake uploads:secure_upload_analyse_and_update
This task only works for external storage.

¿Estoy pasando por alto algo? ¿O es un error y debería ejecutarse con secure media desactivado?

Gracias por tu experiencia.

1 me gusta

Bueno, en realidad es la suerte lo que a veces nos mantiene con vida, ¿verdad?

Aun así, gracias. Me frustré un poco y borrar todos los mensajes fue realmente una última opción.

Bueno, quizás puedas darme alguna pista sobre los temas aquí. Para mí, siendo relativamente nuevo en Docker y Discourse, me siento un poco perdido con tu sugerencia de ejecutar una consulta a la base de datos. ¿Qué base de datos utiliza Discourse y puedo hacer algo como:

./launcher enter app
mysql select bla

¿O es MongoDB? Pero entrar y ejecutar la consulta dentro del contenedor es al menos el camino correcto, ¿no es así?

¿Y existe una lista de campos o propiedades que pueda revisar, como una referencia o algo similar, para poder generar algunas ideas sobre la consulta adecuada?

Pero solo para aclarar esto: incluso si logro obtener la lista de imágenes de perfil en la lista de bandeja de entrada, ¿aún no hay ninguna sugerencia para reducir cuáles serían las imágenes problemáticas o qué hacer incluso si las encontramos, ¿verdad? ¿Tienes alguna idea sobre eso?

Además, me sorprende que haya problemas habituales con las imágenes de perfil. ¿Existe algún tema específico que pueda leer para obtener más información al respecto? ¿O quizás alguna guía sobre cómo manejar las imágenes de perfil, restringir su uso o algo así? Con el fin de evitar este tipo de problemas.

Ed_S, muchas gracias por acompañarme en todo esto.

No sé mucho sobre el lado de la base de datos, pero recomiendo el plugin Data Explorer, que es un plugin oficialmente compatible, y este tema. (Lo mejor es iniciar un nuevo tema si tienes nuevas preguntas: otros podrían beneficiarse del hilo, y un título de tema adecuado atraerá más ayuda.)

Edición: quizás también ver

donde hay indicios de cómo funciona el mecanismo y cómo podrías consultarlo.

1 me gusta

¡Hola Ed_S!

Muchas gracias por los consejos. ¡El complemento Data Explorer es increíble! Para análisis adicionales, es un excelente punto de partida.

También fue útil el consejo sobre los avatares perdidos. Lo revisé y todo parecía estar en orden. Así que muchas gracias por compartir tu conocimiento.

Bueno, mientras funcione por ahora, estoy muy feliz. Cruzo los dedos para que dure :wink:
Gracias de nuevo, Ed_S, por tu ayuda constante.

Si alguien más se topa con este error, por favor házmelo saber: ¿qué experimentaste o qué se podría hacer para prevenir este tipo de errores?

A todos, gracias por leer.

1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.