Hier, mon site a commencé à générer des notifications pour d’anciennes publications sans raison apparente. Voici le nombre de notifications de type « publié » (notification_type = 9) créées plus d’une heure après leur publication au cours des derniers jours :
Requête utilisée pour générer le tableau
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
Voici quelques exemples (obtenus en exécutant la CTE dans la requête ci-dessus) :
La première ligne mise en évidence a été créée le 8 décembre, mais un utilisateur suivant cette catégorie a reçu une notification le 25 décembre (et d’après ce que d’autres utilisateurs m’ont rapporté, ils reçoivent des notifications concernant des publications qu’ils avaient déjà vues).
La deuxième ligne mise en évidence a été créée le 29 septembre, modifiée un jour plus tard, et notifiée le 25 décembre.
Je viens de reconstruire le conteneur, j’exécute donc la dernière version de Discourse. Pour l’instant, j’ai désactivé les notifications par e-mail.
Avez-vous des idées pour résoudre ce problème ? Je suppose qu’il s’agit soit d’une file d’attente bloquée pour une raison quelconque, soit d’un problème similaire. Existe-t-il un moyen de déterminer ce qui génère ces notifications ?


