Saya memiliki skenario berikut ini:
- Seorang pengguna membuat permintaan GET ke
/projects/1
dan menerima ETag . - Pengguna membuat permintaan PUT
/projects/1
dengan ETag dari langkah # 1. - Pengguna membuat permintaan PUT lain untuk
/projects/1
menggunakan ETag dari langkah # 1.
Biasanya, permintaan PUT kedua akan menerima respons 412, karena ETag sekarang basi - permintaan PUT pertama memodifikasi sumber daya, sehingga ETag tidak cocok lagi.
Tetapi bagaimana jika dua permintaan PUT dikirim pada waktu yang sama (atau tepatnya satu demi satu)? Permintaan PUT pertama tidak punya waktu untuk memproses dan memperbarui sumber daya sebelum PUT # 2 tiba, yang menyebabkan PUT # 2 menimpa PUT # 1. Inti dari penguncian optimis adalah agar hal itu tidak terjadi ...