Ho questo scenario seguente:
- Un utente invia una richiesta GET a
/projects/1
e riceve un ETag . - L'utente invia una richiesta PUT a
/projects/1
con ETag dal passaggio 1. - L'utente invia un'altra richiesta PUT a
/projects/1
con ETag dal passaggio 1.
Normalmente, la seconda richiesta PUT riceverebbe una risposta 412, poiché l'ETag è ormai 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, che fa sì che PUT # 2 sovrascriva PUT # 1. L'intero punto del blocco ottimistico è che ciò non accada ...