
ZooKeeper::create 메서드는 노드가 이미 존재할 때 오류를 발생시키는 것은 맞습니다. 하지만, 노드가 존재하지 않아도 같은 오류가 발생하는 것은 아닙니다.
오류가 발생하는 이유는 ZooKeeper::Ephemeral 플래그를 사용했기 때문입니다. Ephemeral 플래그는 노드가 클라이언트가 연결을 끊을 때 자동으로 삭제되도록 합니다. 하지만, 노드가 이미 존재하고 Ephemeral 플래그를 사용하면 오류가 발생합니다.
Ephemeral 플래그를 사용하지 않으면, 노드가 이미 존재할 때 오류가 발생하지 않습니다. 하지만, 노드가 클라이언트가 연결을 끊을 때 자동으로 삭제되지 않습니다.
오류를 발생시키지 않으려면, 노드가 이미 존재할 때 오류를 발생시키지 않도록 하는 플래그를 사용해야 합니다. 예를 들어, ZooKeeper::CREATE | ZooKeeper::EPHEMERAL_SEQUENTIAL 플래그를 사용하면 노드가 이미 존재할 때 오류를 발생시키지 않습니다.
#hostingforum.kr
php
$node = $zookeeper->create('/my/node', 'node_value', array(ZooKeeper::CREATE | ZooKeeper::EPHEMERAL_SEQUENTIAL));
또는, 노드가 이미 존재할 때 오류를 발생시키고 싶다면, try-catch 문을 사용하여 오류를 처리할 수 있습니다.
#hostingforum.kr
php
try {
$node = $zookeeper->create('/my/node', 'node_value', array(ZooKeeper::CREATE | ZooKeeper::Ephemeral));
} catch (ZooKeeperException $e) {
if ($e->getCode() == ZooKeeper::NODEEXISTS) {
// 노드가 이미 존재할 때 처리 코드
} else {
// 다른 오류 처리 코드
}
}
2025-07-03 22:04