Project

General

Profile

Development #53367

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

Added by Benjamin Dauvergne 5 months ago. Updated 15 days ago.

Status:
Nouveau
Priority:
Normal
Category:
-
Target version:
-
Start date:
23 Apr 2021
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

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.


Files

History

#2

Updated by Benjamin Dauvergne 5 months ago

  • Status changed from Solution proposée to En cours
#4

Updated by Frédéric Péters 5 months ago

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

Updated by Benjamin Dauvergne 5 months ago

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

Updated by Benjamin Dauvergne 5 months ago

  • Description updated (diff)
#7

Updated by Benjamin Dauvergne 15 days ago

  • Status changed from Solution proposée to Nouveau

Also available in: Atom PDF