Ressource

1. Télécharger et lancer le projet

Consigne

Un système de réservation de places pour un événement. Modèle simplifié :

  • Event - id - capacity (ex: 100)
  • Reservation - id - event_id - user_id

Règle métier : Le nombre de réservations pour un événement ne doit jamais dépasser sa capacité.

1. Exécuter le test

Il n’y a qu’une seule place de disponible, mais deux threads concurrents réservent la place.

  • Executer le test
  • Et vérifier qu’il échoue (2 places réservées au lieu d’une)

2. Quel est le bug concurrent présent dans ce code ?

  • Dirty read ?
  • Non-repeatable read ?
  • Phantom read ?
  • Lost update ?

Et pourquoi une transaction seule ne suffit-elle pas ici ?

4. Proposer des solutions

  • Quelles sont les solutions possibles ?