J’ai récemment mis à niveau mon instance Docker de Discourse fonctionnant sur une Ubuntu EC2. J’ai utilisé la commande launcher rebuild pour effectuer la mise à niveau. J’avais auparavant la version 2.4.0 et je suis passé à la version 2.6.0.beta1 (j’ai également effectué une nouvelle mise à niveau vers la version 2.6.0.beta2). J’utilise ElastiCache à la place de Redis, et cela fonctionnait sans problème avant la mise à niveau. Immédiatement après la mise à niveau, j’ai remarqué que Sidekiq n’envoyait plus d’e-mails. J’ai redémarré l’application et vidé le cache, et cela semblait fonctionner, mais c’était un faux positif.
Indications observées de dysfonctionnement
- Sidekiq planifie et met en file d’attente des tâches à un rythme raisonnablement stable (comme indiqué dans le tableau de bord Sidekiq), mais il n’en exécute aucune.
- La page d’administration signale que Sidekiq ne fonctionne pas.
- Les journaux montrent plusieurs occurrences de
Sidekiq heartbeat test failed, restarting. - Bien sûr : les e-mails ne sont pas envoyés aux utilisateurs.
Choses que j’ai essayées (après avoir lu des publications ici et sur Stack Overflow)
- Envoi réussi d’un e-mail de test avec
discourse-doctorpour vérifier que cette partie du flux fonctionne. - Vérification sur le tableau de bord Sidekiq que le pied de page affiche bien la bonne instance ElastiCache .
- Vérification que les journaux Docker ne signalent aucune erreur (
ok: run: redis: (pid XX) 0s). - Vidage du cache et redémarrage de Discourse (
./launcher restart app). - Arrêt de l’application, vidage du cache, puis redémarrage de l’application.
- Reconstruction de l’application.
Étapes que je n’ai pas essayées
- Création d’une nouvelle instance ElastiCache.
- Mise en veille de cette installation et création d’une nouvelle instance propre.
Quelqu’un a-t-il rencontré ce problème et aurait-il des suggestions ?
Y a-t-il des journaux que j’aurais manqués ?
Existe-t-il un moyen de forcer Sidekiq à traiter ses tâches ?