Projet

Général

Profil

Development #53367

api: réessayer fillslot() en cas d'exception IntegrityError sur la création d'un Event

Ajouté par Benjamin Dauvergne il y a environ 3 ans. Mis à jour il y a environ un an.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
23 avril 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Lors de la réservation d'un rendez-vous et en cas de forte affluence on peut avoir dans fillslot() un créneau qui semble disponible au moment du get_all_slots() mais qui ne l'est plus lors de la création de l'objet Event, dans ce cas l'exception IntegrityError est levé à cause de l'index d'exclusion sur les intervals [start_datetime, _end_datetime].

C'est une situation type d'"optimistic concurrency control", la seul chose à faire c'est de défaire ce qui a pu être faire (en créant les Event dans une transaction) et de recommencer du début l'appel fillslot(). Pour éviter une boucle on ajoutera un paramètre retry.

PS: ce n'est pas une erreur qu'on voit en vrai mais une erreur qui apparaît dès qu'on fait un test de charge comme le test introduit dans le premier commit; ça me semble donc important si on veut travailler sur les performances en général.


Fichiers


Demandes liées

Lié à Chrono - Bug #67053: IntegrityError: conflicting key value violates exclusion constraint "tstzrange_constraint"Fermé06 juillet 2022

Actions

Historique

#2

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

  • Statut changé de Solution proposée à En cours
#4

Mis à jour par Frédéric Péters il y a presque 3 ans

Cette branche est invivable pour jenkins (jobs récents après 1 jour, 6 heures, et 51 minutes pour le dernier que je viens de voir rouge et couper).

#5

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

Frédéric Péters a écrit :

Cette branche est invivable pour jenkins (jobs récents après 1 jour, 6 heures, et 51 minutes pour le dernier que je viens de voir rouge et couper).

Ok, c'est corrigé.

#6

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

  • Description mis à jour (diff)
#7

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution proposée à Nouveau
#8

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Assigné à Benjamin Dauvergne supprimé

Je me débranche de ce ticket, je préfère laisser ça à la la team chrono.

#9

Mis à jour par Benjamin Dauvergne il y a environ un an

  • Statut changé de Nouveau à Fermé

Intégré et corrigé dans #67053.

#10

Mis à jour par Benjamin Dauvergne il y a environ un an

  • Lié à Bug #67053: IntegrityError: conflicting key value violates exclusion constraint "tstzrange_constraint" ajouté

Formats disponibles : Atom PDF