Hi Hanson, I think that the code is OK in this situation, however the comment is misleading.

In ZooKeeper version 3 watches are re-registered when the client reconnects to a server. See this section of the docs:
http://hadoop.apache.org/zookeeper/docs/r3.0.1/zookeeperProgrammers.html#ch_zkWatches

Specifically this:

"Watches will not be received while disconnected from a server. When a client reconnects, any previously registered watches will be reregistered and triggered if needed."

I have created a jira to improve these docs:
https://issues.apache.org/jira/browse/ZOOKEEPER-253

Thanks for bringing this to our attention!

Patrick

Hanson Char wrote:
I wonder if there is a missing statement (bug?) in the example:

 http://hadoop.apache.org/zookeeper/docs/r3.0.1/javaExample.html#sc_DataMonitor

public void process(WatchedEvent event) {
           ...
           case SyncConnected:
               // Everything is happy. Lets kick things off
               // again by checking the existence of the znode
               break;

               ...

According to the comment, shouldn't ZooKeeper.exists be invoked ?  Like so:

           case SyncConnected:
               // Everything is happy. Lets kick things off
               // again by checking the existence of the znode
               zk.exists(znode, true, this, null);
               break;

Or am I missing something ?

Regards,
Hanson

Reply via email to