Zookeeper 3.5和Curator 4.0:InterProcessMutex release()并未删除锁定路径

时间:2018-09-21 12:28:54

标签: apache-zookeeper apache-curator

我正在使用CuratorFramework 4.0.0和Zookeper 3.5.4。 我有以下代码片段:

RetryPolicy retryPolicy = new RetryOneTime(1000);
client = CuratorFrameworkFactory.newClient(zkConnectionString, retryPolicy);
client.start();
String path = "/node/test_lock";
client.createContainers(path);
InterProcessSemaphoreMutex lock = new InterProcessSemaphoreMutex(client, path);
if (lock.acquire(3, TimeUnit.MILLISECONDS)) {                 
    LOGGER.debug(client.exists(lockPath) == null);
}
if (lock != null){
    lock.release();  // After I call this method,
                     // the "/node/test_lock" node still exists.
}

使用zookeeper 3.5版时,不应自动删除锁定路径吗?我想念什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

用于锁定配方的“父” ZNode创建为Container nodes。当容器节点没有子节点时,ZooKeeper会对其进行清理。默认的时间检查是1分钟,因此您将不会看到父节点被删除,直到大约30分钟。 1分钟后(此值可以更改-有关znode.container.checkIntervalMs的详细信息,请参见此处)