重新连接后 Curator 互斥锁失败

Curator mutex lock failed after reconnected

场景:

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

那么在使用 Curator 时如何处理重连后的互斥量失败?谢谢。

您应该阅读有关使用 Curator 进行错误处理的说明(注意:我是 Curator 的主要作者):http://curator.apache.org/errors.html as well as Tech Note 12: https://cwiki.apache.org/confluence/display/CURATOR/TN12

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