You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@zookeeper.apache.org by Sergei Babovich <sb...@demandware.com> on 2012/09/19 21:05:25 UTC

Zookeeper doc example - what if fails to reestablish watch? Is more error handling required?

Hi,
I was reviewing zookeeper example code 
http://zookeeper.apache.org/doc/r3.4.3/javaExample.html
In particular implementation of watch event handling in DataMonitor class.

public void process(WatchedEvent event) {
         String path = event.getPath();
         if (event.getType() == Event.EventType.None) {
             // We are are being told that the state of the
             // connection has changed
             switch (event.getState()) {
             case SyncConnected:
                 // In this particular example we don't need to do anything
                 // here - watches are automatically re-registered with
                 // server and any watches triggered while the client was
                 // disconnected will be delivered (in order of course)
                 break;
             case Expired:
                 // It's all over
                 dead = true;
                 listener.closing(KeeperException.Code.SessionExpired);
                 break;
             }
         } else {
             if (path != null && path.equals(znode)) {
                 // Something has changed on the node, let's find out
                 zk.exists(znode, true, this, null);
             }
         }
         if (chainedWatcher != null) {
             chainedWatcher.process(event);
         }
     }


My question is what if call of zk.exists to reestablish watch fails (due 
to connection loss or something else - it should be possible for remote 
call). Then watch will not be set and no further notifications about 
changes will be received. Is my understanding correct? What proper error 
handling should be in this case? Should zk.exists be called at least on 
every SyncConnected event to make ensure that watch gets reestablished 
when possible?

Regards,
Sergei



This e-mail message and all attachments transmitted with it may contain privileged and/or confidential information intended solely for the use of the addressee(s). If the reader of this message is not the intended recipient, you are hereby notified that any reading, dissemination, distribution, copying, forwarding or other use of this message or its attachments is strictly prohibited. If you have received this message in error, please notify the sender immediately and delete this message, all attachments and all copies and backups thereof.