【问题标题】:How to re-acquire InterProcessMutex after client restart客户端重启后如何重新获取InterProcessMutex
【发布时间】:2017-09-20 11:56:38
【问题描述】:

我正在使用this curator recipe 来同步对多个客户端的共享状态的访问。问题是如果一个进程在持有锁的时候死掉了,客户端就会失败:

IllegalMonitorStateException You do not own the lock: /classifier-job-lock  
org.apache.curator.framework.recipes.locks.InterProcessMutex.release (InterProcessMutex.java:140)

在这种情况下最好的行动计划是什么?

【问题讨论】:

  • "客户端重启后无法重新获取" - 为什么不呢?原始客户端的会话到期后,锁将变为可用。可以举个例子吗?
  • @Randgalt 编辑了问题以包含我看到的错误。请详细说明客户端会话。

标签: java apache-zookeeper distributed-computing apache-curator


【解决方案1】:

您正在使用InterProcessMutex。这与 JDK 锁的行为类似,获取锁的线程必须是释放锁的线程。注意:这个类的文档应该改进。

请尝试使用没有此限制的InterProcessSemaphoreMutex

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-16
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2015-10-23
    • 2021-11-23
    相关资源
    最近更新 更多