检测沙发基地的锁定释放?

时间:2014-12-27 23:14:41

标签: couchbase

这是我想做的事情:

try to lock a few documents
if any lock fails:
  unlock any docs we've locked so far
  wait until all locks are cleared
  retry from beginning
do something

但是,我不知道如何有效地等待所有锁被清除。除了使用"无限"之外,我无法在couchbase文档中找到任何内容。检查锁定尝试是否返回临时失败错误的循环。在重试之前有没有什么好方法可以等待正确的时间? (加上一些随机时间以避免重复冲突)

在重试之前等待15秒以上并不是那么用户友好。

1 个答案:

答案 0 :(得分:3)

没有直接的。

两种可能的优化可以使它更有效率。

一个是你可以在应用程序级别有一个方案,如果你不能获得锁定,你就会在该锁上保持一个服务员的记录,所以只有最顶层的一个或两个试图获得锁定。 / p>

两个是你可能应该使用指数退避重试来有效地重试锁。如果你真的想要变得复杂,你可以建立和训练一个模型围绕负指数当锁最有可能。这是您在“截止日期”临近时更频繁地进行轮询的地方,并且使用负指数函数描述其数学。