Saya memiliki skenario berikut ini:
- Seorang pengguna membuat permintaan GET ke
/projects/1dan menerima ETag . - Pengguna membuat permintaan PUT
/projects/1dengan ETag dari langkah # 1. - Pengguna membuat permintaan PUT lain untuk
/projects/1menggunakan 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 ...