J'ai ce scénario suivant:
- Un utilisateur fait une demande GET à
/projects/1
et reçoit un ETag . - L'utilisateur fait une demande PUT
/projects/1
avec l'ETag à partir de l'étape # 1. - L'utilisateur fait une autre demande PUT
/projects/1
avec l'ETag à partir de l'étape # 1.
Normalement, la deuxième demande PUT recevrait une réponse 412, car l'ETag est désormais périmé - la première demande PUT a modifié la ressource, de sorte que l'ETag ne correspond plus.
Mais que se passe-t-il si les deux demandes PUT sont envoyées en même temps (ou exactement l'une après l'autre)? La première demande PUT n'a pas le temps de traiter et de mettre à jour la ressource avant l'arrivée de PUT # 2, ce qui fait que PUT # 2 écrase PUT # 1. Le but du verrouillage optimiste est que cela ne se produise pas ...