我使用couchbase == 2.0.7库运行Couchbase 3.0。
有没有办法在执行upsert后保持文档锁定?
rv = self.cb.lock("locked_key", ttl=5) # <-- document is locked
new_value = rv.value.upper()
cb.upsert("locked_key", new_value, rv.cas) # <-- document is unlocked
我的问题是我在锁定的文档上有多个upsert,如果有两个线程同时开始执行代码,当thread1执行第一个upsert时,文档被解锁并且thread2获取锁定,但是thread1没有完成,在下次upsert时会出现错误。
答案 0 :(得分:1)
不幸的是,Couchbase锁定会在CAS突变上自动释放。没有修改它并保持当前锁定的行为。