Уведомления по электронной почте о темах не отправляются при добавлении цвета сотрудника к сообщению

В данный момент используется версия Discourse 3.5.0.beta7-dev (7562bc2b15)

Письма с уведомлениями о темах не отправляются при планировании публикации поста при определённых условиях.

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

У нас есть категория #Announcements, и по умолчанию для всех пользователей установлено значение Watching First Post (Следить за первым постом).

Шаги для воспроизведения проблемы:

  1. Создать новую тему в скрытой категории, доступной только для сотрудников.
  2. Применить цвет сотрудников к первому посту в новой теме.
  3. Установить таймер темы, выбрать «Планирование публикации», задать категорию #Announcements и указать время/дату.

Что должно произойти:

  • Тема перемещается из #staff в #Announcements.
  • Отправляются десятки тысяч писем.
  • Каждый пользователь получает уведомление.

Что происходит на самом деле:

  • Тема перемещается из #staff в #Announcements.
  • Письма не отправляются.
  • Каждый пользователь получает уведомление.

Пока ждали наступления запланированного времени публикации, я видел две ожидающие задачи (отфильтрованные по ID поста):

Через десять минут, когда тема была опубликована в категории #Announcements, задачи исчезли:

Уведомления были отправлены, вот что получил тестовый аккаунт:

Но письма так и не были отправлены.

Обычно в этот момент мы видим, как в очереди Scheduled начинают появляться десятки тысяч писем, которые постепенно переходят в статус Enqueued, но здесь ничего не происходит — ни одного письма не отправлено.

Также в логах ошибок Discourse ничего не зафиксировано.

В постах был опрос, но я подозреваю, что содержание поста не имеет значения. Однако я упоминаю это на случай, если опрос тоже может иметь какое-то отношение к проблеме.

Сегодняшний неудачный тест можно найти здесь, если это кому-то поможет: https://greyarro.ws/t/do-you-own-a-drone-thats-not-on-the-what-do-you-fly-list/98146.json

Ключевым фактором этой ошибки, похоже, является действие добавления цвета сотрудников к первому посту в теме, запланированной для публикации.

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

3 лайка

Я могу воспроизвести это. :raised_hand:

Мои базовые шаги:

  • Настройте время ожидания для email на 1 минуту (необязательно, но ускоряет процесс)
  • Как администратор, убедитесь, что тестовый пользователь подписан на первый пост в тестовой категории
  • Как администратор, создайте тему в категории Staff
  • С помощью гаечного ключа поста добавьте цвет «Staff» к первому (и единственному) посту
  • Установите таймер темы на запланированную публикацию в тестовой категории через 1 минуту
  • Пофантазируйте немного о мороженом и подождите, пока тема будет опубликована, а затем ещё минуту, чтобы покрыть временное окно для email
  • Как администратор, проверьте уведомления тестового пользователя, а затем проверьте логи email на сайте

Ожидаемый результат: тестовый пользователь получает уведомление о запланированной теме, и в логах email присутствует запись, подтверждающая отправку соответствующего email-уведомления

Фактический результат: тестовый пользователь получает уведомление на сайте, но email не отправляется

(Также провёл этот тест без шага с цветом Staff в качестве контроля. Всё работало корректно. Было отправлено как уведомление на сайте, так и email-уведомление)

Не связано ли это с тем, что цвет Staff изменяет post_type на «2» (moderator_action), и это не учтено в коде?

4 лайка

Я знал, что забуду один из шагов воспроизведения :rofl:

Это интересное наблюдение:

2 лайка

Да, как только вы превращаете пост в пост сотрудника, он становится Post.types[:moderator_action]. Думаю, здесь стоит добавить уведомление — отсутствие, похоже, ошибка.

Добавил задачу со средним приоритетом (в течение следующих 4 недель), чтобы команда могла её рассмотреть.

2 лайка

Из любопытства: если ответить пользователю и установить для ответа цвет сотрудника, это тоже приведёт к тому, что уведомление по электронной почте не будет отправлено этому пользователю?

Лучше поздно, чем никогда? :sweat_smile:

2 лайка

Конечно, что такое несколько недель между друзьями :slight_smile:

Могу ли я просто подтвердить, что это исправление решит данную ситуацию?

Эта тема была автоматически закрыта через 2 дня. Новые ответы больше не принимаются.