Sidekiq con elasticache no procesa trabajos en cola desde actualización de discourse.

Recientemente actualicé mi instancia de Docker de Discourse que se ejecuta en una EC2 de Ubuntu. Utilicé launcher rebuild para la actualización. Antes tenía la versión 2.4.0 y la actualicé a 2.6.0.beta1 (también volví a actualizar a 2.6.0.beta2). Estoy usando ElastiCache en lugar de Redis y funcionaba sin problemas antes de la actualización. Inmediatamente después de la actualización, noté que Sidekiq no estaba enviando correos electrónicos. Reinicié la aplicación y limpié la caché, y parecía que funcionaba, pero fue un falso positivo.

Indicadores observados de mal funcionamiento

  • Sidekiq está programando y encolando trabajos a un ritmo razonablemente constante (según se indica en el panel de Sidekiq), pero no está ejecutando ninguno.
  • La página de administración muestra un error indicando que Sidekiq no se está ejecutando.
  • Los registros muestran varias instancias de Sidekiq heartbeat test failed, restarting.
  • Por supuesto: los correos electrónicos no se están enviando a los usuarios.

Cosas que he intentado (después de leer publicaciones aquí y en Stack Overflow)

  • Envié con éxito un correo de prueba con discourse-doctor para verificar que esa parte del flujo funciona.
  • Verifiqué en el panel de Sidekiq que el pie de página muestra la instancia de ElastiCache correcta .
  • Verifiqué que los registros de Docker no indiquen ningún error (ok: run: redis: (pid XX) 0s).
  • Limpié la caché y reinicié Discourse (./launcher restart app).
  • Detuve la aplicación, limpié la caché y volví a iniciarla.
  • Volví a reconstruir la aplicación.

Pasos que no he intentado

  • Crear una nueva instancia de ElastiCache.
  • Desactivar esta instalación y crear una nueva desde cero.

¿Alguien ha experimentado esto y tiene alguna sugerencia?
¿Hay algún registro que me haya perdido?
¿Existe alguna manera de forzar a Sidekiq a procesar sus trabajos?

En algún momento, Discourse comenzó a requerir Redis 5. ¿Crees que qué versión de Redis admite tu ElastiCache? Pense que había un mensaje claro en los registros, pero podría estar equivocado.

Voy a verificar mi sitio que usa ElastiCache para asegurarme de que no tengo problemas. Estoy bastante seguro de que este sitio usa ElastiCache.

Esa es información útil, gracias. Estoy en la versión 3 de Redis, así que parece que tendré que hacer una actualización esta noche.

Pensé que había un mensaje claro en los registros

También existe la posibilidad de que no esté buscando en los registros correctos. Ni /logs ni ./launcher logs app dan ninguna indicación al respecto, así que ¿quizás debería buscar en otro lugar?

/var/discourse/shared/logs/rails/production.log

si mi memoria y mis dedos funcionaran.

Muy cerca. Lo encontré en:

/var/discourse/shared/web-only/log/rails/production.log

Mensaje muy claro, una vez que lo localicé :+1:t2::

Te estás conectando a Redis v3.2.10, Sidekiq requiere Redis v4.0.0 o superior

Actualicé a Redis 5 y procesó mi cola acumulada. ¡Todo bien ahora! ¡Gracias!