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.