Missing statement in DataMonitor example ?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Missing statement in DataMonitor example ?

Hanson Char
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 | Threaded
Open this post in threaded view
|

Re: Missing statement in DataMonitor example ?

Patrick Hunt
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