这是我想做的事情:
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秒以上并不是那么用户友好。
答案 0 :(得分:3)
没有直接的。
两种可能的优化可以使它更有效率。
一个是你可以在应用程序级别有一个方案,如果你不能获得锁定,你就会在该锁上保持一个服务员的记录,所以只有最顶层的一个或两个试图获得锁定。 / p>
两个是你可能应该使用指数退避重试来有效地重试锁。如果你真的想要变得复杂,你可以建立和训练一个模型围绕负指数当锁最有可能。这是您在“截止日期”临近时更频繁地进行轮询的地方,并且使用负指数函数描述其数学。