2
Lock.release()
잠금 경로가 삭제되지 않습니까? 이게 버그 야? 경로를 직접 삭제해야합니까? 실제로 생성 된 노드가큐레이터 : InterProcessMutex Lock.release()가 잠금 경로를 삭제하지 않았습니다.
CreateBuilderImpl#adjustPath
lock.release()
아이 후이
/test_lock/"+"_c_"+UUID.randomUUID().toString()+"-"
모습처럼 deleted.Because
RetryPolicy retryPolicy = new RetryOneTime(1000);
CuratorFramework client =
CuratorFrameworkFactory
.builder()
.connectString(zkAddress)
.sessionTimeoutMs(ZKConstant.ZK_SESSION_TIMEOUT)
.connectionTimeoutMs(ZKConstant.ZK_CONNECTION_TIMEOUT)
.retryPolicy(retryPolicy)
.build();
client.start();
InterProcessMutex lock = new InterProcessMutex(client, "/test_lock");
if (lock.acquire(3, TimeUnit.SECONDS)) {
LOGGER.debug(curatorUtil.exists(lockPath) == null);
}
if (lock != null){
lock.release(); // After I call this method,
// the "/test_lock" node still exists. Why?
}
LOGGER.debug(curatorUtil.exists(lockPath) == null);
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
ZooKeeper에서 일반적인 문제입니다. 그래서 ZooKeeper 3.5에 Container Nodes를 추가했습니다. 큐레이터 3.0과 ZooKeeper 3.5.x를 사용하면 부모 노드가 자동으로 삭제됩니다. 이전 버전에서는 Curator 's Reaper와 ChidReaper를 사용해야합니다. – Randgalt