Sidekiq, utilizzando elasticache, non elabora i job in coda dall'aggiornamento di discourse

Recentemente ho aggiornato la mia istanza Docker di Discourse in esecuzione su un’istanza EC2 di Ubuntu. Ho utilizzato launcher rebuild per l’aggiornamento. In precedenza avevo la versione 2.4.0 e sono passato alla 2.6.0.beta1 (successivamente ho aggiornato anche alla 2.6.0.beta2). Sto utilizzando Elasticache al posto di Redis e prima dell’aggiornamento tutto funzionava senza problemi. Subito dopo l’aggiornamento ho notato che Sidekiq non inviava email. Ho riavviato l’app e svuotato la cache e sembrava funzionare, ma si è trattato di un falso positivo.

Segnali osservati di malfunzionamento

  • Sidekiq programma e accoda lavori a un ritmo abbastanza costante (come indicato nella dashboard di Sidekiq), ma non ne esegue alcuno.
  • La pagina di amministrazione segnala che Sidekiq non è in esecuzione.
  • I log mostrano diversi casi di Sidekiq heartbeat test failed, restarting.
  • Ovviamente: le email non vengono inviate agli utenti.

Cose che ho provato (dopo aver letto post qui e su Stack Overflow)

  • Ho inviato con successo un’email di prova con discourse-doctor per verificare che quella parte del flusso funzionasse.
  • Ho verificato nella dashboard di Sidekiq che il piè di pagina mostri l’istanza Elasticache corretta .
  • Ho verificato che i log Docker non indichino errori (ok: run: redis: (pid XX) 0s).
  • Ho svuotato la cache e riavviato Discourse (./launcher restart app).
  • Ho fermato l’app, svuotato la cache e riavviato l’app.
  • Ho ricostruito nuovamente l’app.

Passaggi che non ho ancora provato

  • Creare una nuova istanza Elasticache.
  • Mettere in standby questa installazione e crearne una pulita.

Qualcuno ha riscontrato questo problema e ha suggerimenti?
Ci sono log che potrei aver trascurato?
Esiste un modo per costringere Sidekiq a elaborare i suoi lavori?

A un certo punto Discourse ha iniziato a richiedere Redis 5; credo che tu sappia quale versione di Redis supporta il tuo ElasticCache. Pensavo ci fosse un messaggio chiaro nei log, ma potrei sbagliarmi.

Controllerò il mio sito che utilizza ElasticCache per assicurarmi di non avere problemi. Sono abbastanza certo che questo sito utilizzi ElasticCache.

Questa è un’informazione utile, grazie. Sto usando la versione 3 di Redis, quindi sembra che dovrò effettuare un aggiornamento stasera.

Pensavo ci fosse un messaggio chiaro nei log

È anche possibile che non stia guardando nei log corretti. Né /logs./launcher logs app forniscono alcuna indicazione a riguardo, quindi forse c’è un altro posto dove dovrei cercare?

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

se la mia memoria e le mie dita funzionassero.

Molto vicino. L’ho trovato qui:

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

Messaggio molto chiaro, una volta che l’ho individuato :+1:t2::

Stai connettendoti a Redis v3.2.10, Sidekiq richiede Redis v4.0.0 o superiore

Ho aggiornato a Redis 5 ed è stato elaborato il mio backlog della coda. Tutto a posto ora! Grazie!