Ich habe folgendes Szenario:
- Ein Benutzer stellt eine GET- Anfrage an
/projects/1
und empfängt einen ETag . - Der Benutzer stellt ab Schritt 1 eine PUT- Anfrage
/projects/1
mit dem ETag. - Der Benutzer stellt
/projects/1
ab Schritt 1 eine weitere PUT-Anfrage mit dem ETag.
Normalerweise erhält die zweite PUT-Anforderung eine 412-Antwort, da das ETag jetzt veraltet ist. Die erste PUT-Anforderung hat die Ressource geändert, sodass das ETag nicht mehr übereinstimmt.
Was aber, wenn die beiden PUT-Anforderungen gleichzeitig (oder genau nacheinander) gesendet werden? Die erste PUT-Anforderung hat keine Zeit, die Ressource zu verarbeiten und zu aktualisieren, bevor PUT # 2 eintrifft, was dazu führt, dass PUT # 2 PUT # 1 überschreibt. Der springende Punkt beim optimistischen Sperren ist, dass dies nicht geschieht ...