Вчера мой сайт внезапно начал генерировать уведомления для старых постов. Вот количество уведомлений типа «posted» (notification_type = 9), созданных более чем через час после публикации за последние несколько дней:
Запрос, который я использовал для генерации таблицы
WITH pre AS (
SELECT
p.id as post_id,
to_char(n.created_at,
'YYYY-MM-DD') AS notified_day,
p.topic_id,
round(least(EXTRACT(EPOCH FROM n.created_at - p.created_at)::numeric, EXTRACT(EPOCH FROM n.created_at - p.updated_at)::numeric) / 3600) AS hours_diff,
p.created_at,
p.updated_at,
n.created_at,
u.username
FROM
notifications n
LEFT JOIN posts p ON p.post_number = n.post_number
AND p.topic_id = n.topic_id
left join users u on u.id = n.user_id
WHERE
round(least(EXTRACT(EPOCH FROM n.created_at - p.created_at)::numeric, EXTRACT(EPOCH FROM n.created_at - p.updated_at)::numeric) / 3600) > 0
AND n.notification_type = 9
ORDER BY
n.created_at DESC
LIMIT 400
)
SELECT
count(*),
notified_day
FROM
pre
GROUP BY
notified_day
ORDER BY
notified_day DESC
Вот несколько примеров (результаты выполнения CTE из запроса выше):
Первая выделенная строка была создана 8 декабря, но пользователь, следящий за этой категорией, получил уведомление 25 декабря (и, судя по сообщениям других пользователей, им приходят уведомления о постах, которые они уже видели).
Вторая выделенная строка была создана 29 сентября, изменена на следующий день, а уведомление пришло 25 декабря.
Я только что пересобрал контейнер, поэтому сейчас у меня запущена последняя версия Discourse. На данный момент я отключил уведомления по электронной почте.
Есть ли какие-то идеи, как это устранить? Я предполагаю, что это либо очередь, которая по какой-то причине забилась, либо что-то подобное. Можно ли узнать, что именно генерирует эти уведомления?


