Ho questo seguente scenario:
- Un utente fa una richiesta GET a
/projects/1
e riceve un ETag . - L'utente fa una richiesta PUT a
/projects/1
con ETag dal punto # 1. - L'utente fa un'altra richiesta PUT a
/projects/1
con ETag dal punto # 1.
Normalmente, la seconda richiesta PUT riceverebbe una risposta 412, dal momento che l'ETag ora è obsoleto - la prima richiesta PUT ha modificato la risorsa, quindi l'ETag non corrisponde più.
Ma cosa succede se le due richieste PUT vengono inviate contemporaneamente (o esattamente una dopo l'altra)? La prima richiesta PUT non ha il tempo di elaborare e aggiornare la risorsa prima dell'arrivo di PUT # 2, il che fa sì che PUT # 2 sovrascriva PUT # 1. L'intero punto del blocco ottimistico è che ciò non avvenga ...