zestedesavoir / zds-site

Cœur du projet technique de Zeste de Savoir
https://zestedesavoir.com
Other
269 stars 161 forks source link

Notifications créées 2x #4539

Open vhf opened 7 years ago

vhf commented 7 years ago

https://sentry.sandhose.fr/zeste-de-savoir/backend-l7/issues/745/

IntegrityError: (1062, "Duplicate entry '2042-40-9151' for key 'notification_subscription_user_id_41ab76da08476aa8_uniq'")
(31 additional frame(s) were not displayed)
...
  File "zds/forum/views.py", line 282, in dispatch
    return super(TopicEdit, self).dispatch(request, *args, **kwargs)
  File "zds/forum/views.py", line 319, in post
    response['follow'] = self.perform_follow(self.object, request.user).is_active
  File "zds/forum/commons.py", line 31, in perform_follow
    return TopicAnswerSubscription.objects.toggle_follow(topic, user)
  File "zds/notification/managers.py", line 149, in toggle_follow
    subscription = self.get_or_create_active(user, content_object)
  File "zds/notification/managers.py", line 90, in get_or_create_active
    subscription.save()

IntegrityError: (1062, "Duplicate entry '2042-40-9151' for key 'notification_subscription_user_id_41ab76da08476aa8_uniq'")

Wrapper ça dans une transaction devrait suffire à régler le problème.

artragis commented 5 years ago

Toujours d'actualité?

si ça n'est pas le cas #4972 est peut-être aussi fixé.

vhf commented 5 years ago

Ça s'est produit une 20aine de fois ces derniers mois, la dernière fois il y a 4j : https://sentry.sandhose.fr/zeste-de-savoir/zds-site/?query=is%3Aunresolved+duplicate

artragis commented 3 years ago

Je crois que j'ai compris !

L'unicité de la clef se fait sur la table notification_subscription, qui est commune à toutes les souscriptions.

Je regarde pour trouver un test de régression