Projet

Général

Profil

Development #53367

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

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.

Retour