Actualicé a la versión 2.6.0.beta5 (7fa6aca9db) esta tarde, y mi panel de control me alerta sobre trabajos fallidos:
Hay 3 trabajos de correo electrónico que fallaron. Revisa tu archivo app.yml y asegúrate de que la configuración del servidor de correo sea correcta. Ver los trabajos fallidos en Sidekiq.
No he visto que se haya enviado ningún correo electrónico (*), y tengo trabajos de Sidekiq en estado de reintento:
Intenté probar el correo electrónico usando la vista previa del resumen y eso arrojó un error:
Error del servidor
al intentar cargar /admin/email/preview-digest.json
Código de error: 500 error
Mi archivo app.yml no ha cambiado. Uso Mailgun y todo funcionaba bien antes de la actualización.
(*) Edición: se enviaron unos 12 resúmenes, pero “Hay 265 trabajos de correo electrónico que fallaron”. Evidentemente, el fallo es sensible al contenido del resumen.
Creo que algún valor de datos parece ser nil o estar vacío cuando no debería serlo, o quizás no debería importar. Dos trazas de los registros, una para la vista previa y otra para el trabajo de Sidekiq, creo que:
/var/www/discourse/lib/pretty_text.rb:440:in `block in strip_secure_media'
nokogiri-1.10.10/lib/nokogiri/xml/node_set.rb:238:in `block in each'
nokogiri-1.10.10/lib/nokogiri/xml/node_set.rb:237:in `upto'
nokogiri-1.10.10/lib/nokogiri/xml/node_set.rb:237:in `each'
/var/www/discourse/lib/pretty_text.rb:434:in `strip_secure_media'
/var/www/discourse/lib/email/styles.rb:347:in `replace_secure_media_urls'
/var/www/discourse/lib/email/styles.rb:281:in `to_html'
/var/www/discourse/lib/email/renderer.rb:31:in `html'
/var/www/discourse/lib/email/sender.rb:70:in `send'
/var/www/discourse/app/jobs/regular/user_email.rb:70:in `send_user_email'
/var/www/discourse/app/jobs/regular/user_email.rb:25:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
rails_multisite-2.5.0/lib/rails_multisite/connection_management.rb:76:in `with_connection'
/var/www/discourse/app/jobs/base.rb:221:in `block in perform'
/var/www/discourse/app/jobs/base.rb:217:in `each'
/var/www/discourse/app/jobs/base.rb:217:in `perform'
sidekiq-6.1.2/lib/sidekiq/processor.rb:196:in `execute_job'
sidekiq-6.1.2/lib/sidekiq/processor.rb:164:in `block (2 levels) in process'
sidekiq-6.1.2/lib/sidekiq/middleware/chain.rb:138:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:138:in `call'
sidekiq-6.1.2/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'
sidekiq-6.1.2/lib/sidekiq/middleware/chain.rb:143:in `invoke'
sidekiq-6.1.2/lib/sidekiq/processor.rb:163:in `block in process'
sidekiq-6.1.2/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
sidekiq-6.1.2/lib/sidekiq/job_retry.rb:111:in `local'
sidekiq-6.1.2/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
sidekiq-6.1.2/lib/sidekiq.rb:38:in `block in <module:Sidekiq>'
sidekiq-6.1.2/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
sidekiq-6.1.2/lib/sidekiq/processor.rb:257:in `stats'
sidekiq-6.1.2/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
sidekiq-6.1.2/lib/sidekiq/job_logger.rb:13:in `call'
sidekiq-6.1.2/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
sidekiq-6.1.2/lib/sidekiq/job_retry.rb:78:in `global'
sidekiq-6.1.2/lib/sidekiq/processor.rb:124:in `block in dispatch'
sidekiq-6.1.2/lib/sidekiq/logger.rb:10:in `with'
sidekiq-6.1.2/lib/sidekiq/job_logger.rb:33:in `prepare'
sidekiq-6.1.2/lib/sidekiq/processor.rb:123:in `dispatch'
sidekiq-6.1.2/lib/sidekiq/processor.rb:162:in `process'
sidekiq-6.1.2/lib/sidekiq/processor.rb:78:in `process_one'
sidekiq-6.1.2/lib/sidekiq/processor.rb:68:in `run'
sidekiq-6.1.2/lib/sidekiq/util.rb:15:in `watchdog'
sidekiq-6.1.2/lib/sidekiq/util.rb:24:in `block in safe_thread'
Solo para señalar: mi actualización falló al ejecutarse desde el navegador, así que realicé una reconstrucción desde la línea de comandos.
(Por si eso significa que esta instalación ha llegado a un estado diferente en comparación con una que se actualizó correctamente. Tengo otro foro en un servidor diferente que se actualizó correctamente y que no falla al enviar correos electrónicos ni al preparar un Resumen de vista previa.)
Me pregunto si esto podría ser una solución alternativa: si el problema es el manejo de (algunas) imágenes en los correos electrónicos de resumen, y si estamos dispuestos a enviar resúmenes temporalmente sin imágenes, podemos establecer longitud del correo corto en un número muy grande, de modo que eliminar imágenes de correos cortos elimine todas las imágenes.
Edición: no, lo probé y los trabajos de Sidekiq siguen acumulándose. No se envió ningún correo electrónico durante el experimento, a pesar de que muchos trabajos se reejecutaron varias veces.