[Majeur] Inscription aux events : overbooking et 500 sur requêtes simultanées #105
Labels
No labels
bug
enhancement
feature
groupe/chat-data
groupe/friends-blocking
groupe/input-validation
groupe/realtime-presence
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Transcendence/backend#105
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gravité : Majeur
Rapports QA d'origine : EVENTS-10, EVENTS-21
Race condition : 5 inscrits sur un event de taille 2 ; doubles inscriptions/désinscriptions simultanées (double-clic) donnent 500.
Détails des rapports
[EVENTS-10] Race condition à l'inscription : dépassement de la capacité (overbooking) — Gravité : Majeur
POST /api/events/{id}/registrationsizeréponses 201, les autres 409 EVENT_FULL.registeredCount = 5; taille 1 -> 2 x 201 (count 2) ; taille 3 -> 5 x 201 (count 5). En séquentiel le contrôle fonctionne (409EVENT_FULL).CreateRegistrationCommand.cs:42-55: check-then-insert surev.Registrations.Countsans verrou/transaction sérialisable ni contrainte en base.5/2(le bouton passe en "Full" mais l'event est sur-réservé) ;PUTavec Size < registrations refuse alors de baisser (409).[EVENTS-21] Doubles requêtes simultanées d'inscription/désinscription -> 500 au lieu de 409/404 — Gravité : Mineur
POST /api/events/{id}/registrationetDELETE /api/events/{id}/registration[201, 500, 500, 500]; désinscription :[500, 204, 500, 500](DbUpdateConcurrencyException). Reproductible en UI par double-clic sur le bouton "Registered" (une des deux requêtes DELETE renvoie 500, vu dansfailed_requests).ALREADY_REGISTERED/ 404NOT_REGISTERED(idempotent).CreateRegistrationCommand.cs:37-55,DeleteRegistrationCommand.cs:25-32(check-then-act, exceptions de concurrence EF non gérées, mêmes causes que EVENTS-10).Trouvé par une campagne de tests QA automatisés (agents Claude, Playwright) sur l'environnement de dev. Les captures citées sont locales et non jointes.