Apache 策展人 InterProcessSemaphoreMutex 发布能否挂起?

Can Apache curator InterProcessSemaphoreMutex release hang ever?

我在我们的代码中使用以下方法来确保单例 JVM 应用程序

 public void acquireLock(InterProcessSemaphoreMutex lock){
   lock.acquire();
 }

 public void releaseLock(InterProcessSemaphoreMutex lock){
      lock.release();
 }

我在两种情况下释放锁(通过上面的函数调用):

  1. 工作完成。
  2. 我从策展人那里得到了一个丢失的状态更改。

对 release() 的调用是否有可能挂起?
我还应该在 releaseLock() 中添加以下谓词吗?

if (lock.isAcquiredInThisProcess()) {
    lock.release();
}

(注:我是Curator的主要作者)

如果您当前未连接(即处于 SUSPENDED/LOST),则 lock.release() 将根据您当前的重试策略挂起。但是,它不会无限期地挂起,并且会 return 一旦重试次数用尽。更重要的是,Curator 在内部保证与 lock/semaphore 关联的节点将被删除,因此如果您打算释放 lock/semaphore,则应始终调用此方法。修复连接后,节点将被删除,等待获取的其他进程可以继续。