Sidekiq с использованием Elasticache не обрабатывает задачи в очереди после обновления Discourse

Недавно я обновил экземпляр Docker с Discourse, работающий на Ubuntu EC2. Для обновления использовал команду launcher rebuild. Ранее у меня была версия 2.4.0, которую я обновил до 2.6.0.beta1 (позже также до 2.6.0.beta2). Вместо Redis я использую Elasticache, и до обновления всё работало без проблем. Сразу после обновления я заметил, что Sidekiq перестал отправлять письма. Я перезапустил приложение и очистил кэш, и казалось, что всё заработало, но это оказалось ложным срабатыванием.

Наблюдаемые признаки сбоя

  • Sidekiq планирует и ставит задачи в очередь с относительно стабильной скоростью (как видно на панели мониторинга Sidekiq), но не выполняет ни одной.
  • На странице администратора появляется предупреждение о том, что Sidekiq не запущен.
  • В логах несколько раз встречается запись: Sidekiq heartbeat test failed, restarting.
  • И, конечно, письма не отправляются пользователям.

Что я уже пробовал (после чтения постов здесь и на Stack Overflow)

  • Успешно отправил тестовое письмо с помощью discourse-doctor, чтобы убедиться, что часть процесса работает.
  • Проверил на панели мониторинга Sidekiq, что в нижнем колонтитуле отображается правильный экземпляр Elasticache .
  • Убедился, что в логах Docker нет ошибок (ok: run: redis: (pid XX) 0s).
  • Очистил кэш и перезапустил Discourse (./launcher restart app).
  • Остановил приложение, очистил кэш и снова запустил его.
  • Пересобрал приложение заново.

Шаги, которые я ещё не пробовал

  • Создание нового экземпляра Elasticache.
  • Отключение этой установки и создание чистой.

Сталкивался ли кто-нибудь с подобной проблемой и есть ли какие-либо предложения?
Может быть, я упустил какие-то логи?
Есть ли способ заставить Sidekiq обработать свои задачи?

В какой-то момент Discourse стал требовать Redis 5. Какую версию Redis поддерживает ваш ElasticCache? Мне казалось, что в логах есть явное сообщение об этом, но я могу ошибаться.

Я проверю свой сайт, использующий ElasticCache, чтобы убедиться, что у меня нет проблем. Я довольно уверен, что этот сайт использует ElasticCache.

Это полезная информация, спасибо. У меня версия 3 Redis, так что, похоже, мне придётся обновить её сегодня вечером.

Я думал, что в логах было чёткое сообщение

Вполне возможно, что я ищу не в тех логах. Ни /logs, ни ./launcher logs app не дают никаких указаний на это, так что, может быть, стоит посмотреть в другом месте?

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

если бы моя память и пальцы работали.

Очень близко. Я нашел его по адресу:

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

Сообщение было очень понятным, как только я его обнаружил :+1:t2::

Вы подключаетесь к Redis v3.2.10, но Sidekiq требует Redis v4.0.0 или выше

Я обновился до Redis 5, и он обработал мою очередь отложенных задач. Всё отлично! Спасибо!