# Notifications créées incorrectement pour d'anciens posts

**URL:** https://meta.discourse.org/t/notifications-being-incorrectly-created-for-old-posts/174247
**Category:** Support
**Created:** [Décembre 25, 2020, 8:27 UTC](https://meta.discourse.org/t/notifications-being-incorrectly-created-for-old-posts/174247 "2020-12-25T08:27:46Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Nacho\_Caballero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nacho_caballero/32/130189_2.png) [@Nacho\_Caballero](https://meta.discourse.org/u/Nacho_Caballero)
#### Post date: [Décembre 25, 2020, 8:27 UTC](https://meta.discourse.org/t/notifications-being-incorrectly-created-for-old-posts/174247/1 "2020-12-25T08:27:46Z")

</div>

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 :

 ![image](https://global.discourse-cdn.com/meta/original/3X/d/6/d60767bd9dff44a62ec9af7c48c9f83a1c85ed76.png)

> **Requête utilisée pour générer le tableau**
>
> ```sql
> 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) :

 ![image](https://global.discourse-cdn.com/meta/original/3X/c/3/c32d46872a0c0fdac1d9683c547f9349d0517136.png)

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 ?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [Décembre 25, 2020, 3:47 UTC](https://meta.discourse.org/t/notifications-being-incorrectly-created-for-old-posts/174247/2 "2020-12-25T15:47:51Z")

</div>

Je parie qu’il s’agit de tâches Sidekiq qui ont échoué par le passé pour une raison quelconque et que vous avez « corrigé » quelque chose, ce qui fait que ces notifications partent maintenant plutôt qu’au moment prévu. Vous pouvez consulter /sidekiq et voir s’il y en a que vous pouvez supprimer avant qu’elles ne soient traitées.

---

<div class="post-metadata">

### Author: ![Nacho\_Caballero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nacho_caballero/32/130189_2.png) [@Nacho\_Caballero](https://meta.discourse.org/u/Nacho_Caballero)
#### Post date: [Décembre 25, 2020, 4:05 UTC](https://meta.discourse.org/t/notifications-being-incorrectly-created-for-old-posts/174247/3 "2020-12-25T16:05:54Z")

</div>

C’est une excellente hypothèse, Jay. Je constate une augmentation ces derniers jours depuis que les utilisateurs ont signalé le problème :

 ![image](https://global.discourse-cdn.com/meta/original/3X/d/1/d19e72def9b01c6b8f12af0e0345937815a056cb.jpeg)

J’ai vérifié la file d’attente planifiée et il ne semble pas y avoir une longue file de messages non traités. En revanche, quelques dizaines de ces notifications obsolètes semblent être ajoutées toutes les 10 minutes environ.

Serait-il possible de remonter à l’origine de ce qui envoie ces éléments à Sidekiq ?

---

<div class="post-metadata">

### Author: ![Nacho\_Caballero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nacho_caballero/32/130189_2.png) [@Nacho\_Caballero](https://meta.discourse.org/u/Nacho_Caballero)
#### Post date: [Décembre 29, 2020, 9:48 UTC](https://meta.discourse.org/t/notifications-being-incorrectly-created-for-old-posts/174247/4 "2020-12-29T09:48:35Z")

</div>

Le problème semblait se résoudre tout seul (heureusement) après quelques jours, mais une analyse plus approfondie m’a permis de réaliser que ma requête SQL initiale était incomplète : le champ `notifications.post_number` pointe vers le premier message non lu dans un sujet donné, mais chaque fois qu’un nouveau message est créé, sa `notification.created_at` est mise à jour avec la nouvelle valeur de `posts.created_at`.

Cela expliquait certaines des incohérences de temps que j’observais, mais pas la hausse mystérieuse qui est apparue puis disparu.

Pour corriger la requête, je devais d’abord vérifier `post_timings` afin de trouver le dernier `topic_id`/`post_number` que l’utilisateur donné avait consulté, et utiliser son `created_at` au lieu de celui provenant de `notifications`.
