В старой версии Couchbase Java SDK было несколько check-and-set (CAS) methods для реализации оптимизированной блокировки . Но что такое соответствующий API в более новой версии SDK (> = 2.0)?Check-and-set в Couchbase Java SDK 2.x?
Начальный код:
JsonDocument doc = bucket.get("myKey");
Long casValue = doc.cas();
// some method to set new value for "myKey" only if CAS value
// has not been changed
Это отвечает на мой вопрос, и я уже принял его, но, возможно, вы также знаете, как создать новый документ с конкретным CAS (вместо изменения существующего документа на месте)? – ffriend
При создании документа, например. используя 'JsonDocument.create' есть перегрузка, которая позволяет вам установить cas –
@ SimonBaslé Я никогда не могу поймать исключение CASMismatchException. Когда есть два потока, которые пытаются изменить документ одновременно (значение роли будет одинаковым для обоих документов при чтении документа), а один поток изменяет документ и заменяет его на сервере, что, в свою очередь, изменяет значение cas , После этого, когда второй поток, который также изменяет документ, пытается заменить, значение cas просто перераспределяется, а не бросает исключение CASMismatchException. Есть ли способ поймать это исключение? –