重新连接后,策展人互斥锁失败

时间:2017-05-17 12:07:00

标签: java locking mutex apache-zookeeper apache-curator

情景:

使用Curator实现分布式互斥锁。 如果已经获得互斥锁的客户端由于网络故障而与zk服务器断开连接,则Curator将尝试重新连接。让我们假设它最终成功重新连接,但是最后一个会话已经过期,用于互斥锁的临时锁定节点也消失了,那么这个互斥锁再也无法工作了!

那么在使用Curator时重新连接后如何处理互斥锁失败?感谢。

1 个答案:

答案 0 :(得分:1)

您应该阅读有关策展人错误处理的说明(注意:我是策展人的主要作者):http://curator.apache.org/errors.html以及技术说明12:https://cwiki.apache.org/confluence/display/CURATOR/TN12

TL; DR是如果连接失败(SUSPENDED),你应该假设你的锁丢失并且中断任何线程持有锁。如果你非常小心,你可以等到连接失败但我的建议是总是假设SUSPENDED意味着你不再持有锁。