Письма с дайджестом не отправляются всем пользователям – нужна помощь в отладке

@Canapin, мы тоже не видели никакой документации, указывающей на то, что эта настройка связана с электронной почтой… хотя полезно знать, где она находится, так что спасибо, что указали на это, @Heliosurge.

Ещё один день без создания дайджеста. Мы создали новую тему, чтобы запустить процесс в последние 24 часа, но ничего не произошло…

Есть ли у кого-то другие идеи? Не упускаем ли мы где-то логи? Что-то где-то не работает, и мы можем это увидеть и исправить?

Исходя из этого, мы предполагаем, что проблема связана с количеством пользователей в системе. Странно то, что с момента запуска на Discourse это число изменилось не более чем на 10.

У нас примерно:

  • 1 миллион активных пользователей
  • 2,4 миллиона отключенных пользователей

Возможно, происходит какой-то странный тайм-аут, когда система выполняет этот запрос? Где мы сможем увидеть вывод, если он не удался?

Снова кажется странным, что это может быть проблемой, поскольку дайджесты отправлялись, по крайней мере, в некотором ограниченном объеме неделю или две назад.

Возможно, или что-то ещё, из-за чего дайджест оказывается пустым и, следовательно, не отправляется пользователям.

Я не знаю, как создаётся дайджест. Не знаю, учитывает ли он категории, которые пользователь игнорирует, или что-то подобное.

Предполагаю, что ваши пользователи не получат дайджест, если вы отправите его вручную через консоль Rails?

user = User.find_by(username: 'user-name')
Jobs.enqueue(:user_email, type: :digest, user_id: user.id)

Через несколько секунд после выполнения этой команды вы должны увидеть, что количество обработанных задач Sidekiq увеличилось на 1. Однако, если у вас большой форум, в любой момент может быть много задач Sidekiq, поэтому может быть сложно заметить увеличение.
Вы можете использовать кнопку «Live Poll» (Живой опрос), чтобы отслеживать это в реальном времени:

По моим тестам, если я запускаю скрипт Rails для отправки дайджеста пользователю, но сам дайджест пуст:

  • потому что пользователь уже получил его ранее,
  • или отключил электронные сводки в своём профиле,
  • и так далее…

Тогда счётчик обработанных задач Sidekiq увеличится на единицу, но письмо не будет отправлено, и в /admin/email/sent не появится новой записи.

Возможно, стоит включить логирование обработанных задач Sidekiq, чтобы найти там какие-либо подсказки. Я немного поискал, но не уверен, что по умолчанию логируется информация о том, какие задачи были обработаны.

Мне кажется, что есть логичное и правильное объяснение тому, почему пользователи не получают дайджест. Задача может быть обработана, но дайджест оказывается пустым, что объясняет отсутствие следов его отправки.
Я бы ещё раз тщательно проверил настройки всех затронутых пользователей, их уровни уведомлений, отслеживаемые категории и тому подобное.

Добавить вывод отладочной информации в механизм отправки дайджестов было бы довольно просто. У вас есть тестовый сайт, где можно провести проверку, не подвергая риску рабочую среду?

Там, например, можно было бы проверить, возникают ли таймауты в запросах. По наивному предположению, таймауты должны отображаться в логах.

Также можно было бы дополнить запрос, формирующий список целевых людей, статистической информацией.

Всё это несложно реализовать в изолированной среде, но может быть опасным в рабочей среде.

Сага продолжается и, возможно, будет решена здесь: