zookeeper insidezookeeper inside

Posted at 2011. 4. 20. 10:12 | Posted in OpenSource
c++용 zookeeper wrapper 클래스를 만들기 전에 이 녀석이 어떻게 동작하는지 알 필요가 있어 살펴 봤다.

<zookeeper(MT) 주요 함수 호출 스택>
zoo_get()
  -> zoo_wget(): sync_completion을 사용해서 blocking 모드로 결과 반환.
    -> zoo_awget()
  -> wait_sync_completion

zookeeper_close()
(1) (ref_counter == 0)
  -> destroy()
    -> cleanup_bufs()
      -> free_completions()
        -> notify_sync_completion() -> broadcast to all waiting sync_completion thread
(2) (ref_counter > 0)
  -> cleanup_bufs() -> free_completions() -> ...
  -> adaptor_finish()
      -> pthread_join(io), pthread_join(completion)
      -> api_epilog() -> ref_counter - 1
        -> zookeeper_close()
          -> (1)
 
async류 함수(zoo_awget)를 호출하더라도 zookeeper_close()를 호출하면 모두 정리하고 나간다.
zookeeper_close() ==> zookeeper join 이라고 봐도 되겠다.

wrapper : 싸는 사람, 감싸는 사람, 싸는 것, 싸개, 보자기
//

zookeeper 메모zookeeper 메모

Posted at 2010. 8. 10. 01:44 | Posted in OpenSource
목적/사용예
- distributed lock service
- maintaining configuration information
- naming
- distributed synchronization
- group services

//