2016-10-19 3 views
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(); 
    } 
} 
+3

ZooKeeper에서 일반적인 문제입니다. 그래서 ZooKeeper 3.5에 Container Nodes를 추가했습니다. 큐레이터 3.0과 ZooKeeper 3.5.x를 사용하면 부모 노드가 자동으로 삭제됩니다. 이전 버전에서는 Curator 's Reaper와 ChidReaper를 사용해야합니다. – Randgalt

답변

0

예! 부모 노드가 자동으로되지 않습니다 노드가 삭제됩니다. 디.