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

В данный момент используется версия 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 лайка

I can repro this. :raised_hand:

My basic step by step:

  • Adjust email time window to 1 minute (optional, but speeds things up)
  • As admin, ensure test user is Watching First Post for a test category
  • As admin, create topic in #staff category
  • Use post wrench to add Staff Colour to the first(/only) post
  • Set topic timer to Schedule Publishing into the test category in 1 minute
  • Have a small day dream about ice cream and wait for topic to be published and for a further minute to elapse to cover the email window
  • As admin, check the test user’s notifications, and then check the site’s email logs

Expected Result: test user receives notification about the scheduled topic and an email log is present signifying an accompanying email notification has been sent

Actual Result: test user receives an onsite notification but no email is sent out

(Also performed this test without the staff colour step as a control. All working fine. Both onsite notification and email notification were sent)

Is it something to do with staff colour adjusting the post_type to ‘2’ (moderator_action) and this not being accounted for in the code?

4 лайка

I knew I’d forget one of the repro steps :rofl:

This is an interesting observation:

2 лайка

Yeah, once you turn a post to a staff post it becomes Post.types[:moderator_action] I think we should notify here, the omission seems to be a mistake.

Added a pri-medium (some time in the next 4 weeks) so the team can have a look.

2 лайка

Out of interest, does replying to a user and setting a staff colour on the reply also cause the email notification to not be sent to that user?

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

2 лайка

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

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

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