It feels like we need a flowchart, state-chart, or something, so we can all talk about the same thing. Then people could suggest abstractions that would essentially put a box around sections of the diagram. However I feel woefully inadequate at the former :(.
.. Adam On Thu, Jan 8, 2009 at 4:20 PM, Benjamin Reed <br...@yahoo-inc.com> wrote: > For your first issue if an ensemble goes offline and comes back, everything > should be fine. it will look to the client just like a server went down. if a > session expires, you are correct that the client will not reconnect. this > again is on purpose. for the node watcher the session is unimportant, but if > the ZooKeeper object is also being used for leader election, for example, you > do not want the object to grab a new session automatically. > > For 2) i think pat responded to that one. an async request will always > return. if the server goes down after the request is issued, you will get a > connection loss error in your callback. > > Your third issued is described with the first. > > ben > > -----Original Message----- > From: burtona...@gmail.com [mailto:burtona...@gmail.com] On Behalf Of Kevin > Burton > Sent: Thursday, January 08, 2009 4:02 PM > To: firstname.lastname@example.org > Subject: Re: Updated NodeWatcher... > >> >> >> i just found that part of this thread went to my junk folder. can you send >> the URL for the NodeListener? >> > > Sure... here you go: > > http://pastebin.com/f1e9d3706 > > >> >> this NodeWatcher is a useful thing. i have a couple of suggestions to >> simplify it: >> >> 1) Construct the NodeWatcher with a ZooKeeper object rather than >> constructing one. Not only does it simplify NodeWatcher, but it also makes >> it so that the ZooKeeper object can be used for other things as well. > > > I hear you.... I was thinking that this might not be a good idea because > NodeWatcher can reconnect you to the ensemble if it goes offline. > > I'm not sure if it's a bug or not but once my session expired on the client > it wouldn't reconnect so I just implemented my own reconnect and session > expiry. > > >> >> 2) Use the async API in watchNodeData and watchNodeExists. it simplifies >> the code and the error handling. > > > The problem was that according to feedback here an async request might never > return if the server dies shortly after the request and before it has a > change to respond. > > I wanted NodeWatcher to hide as much rope as possible. > > >> 3) You don't need to do a connect() in handleDisconnected(). ZooKeeper >> object will do it automatically for you. >> >> > I can try again if you'd like by this isn't my experience. Once the session > expired and the whole ensemble was offline it wouldn't connect again. > > If it was a transient disconnect I'd see on disconnect event and then a > quick reconnect. If it was a long disconnect (with nothing to attach to) > then ZK won't ever reconnect me. > > I'd like this to be the behavior though... > > >> There is an old example on sourceforge >> http://zookeeper.wiki.sourceforge.net/ZooKeeperJavaExample that may give >> you some more ideas on how to simplify your code. >> > > That would be nice.... simple is good! > > Kevin > > > -- > Founder/CEO Spinn3r.com > Location: San Francisco, CA > AIM/YIM: sfburtonator > Skype: burtonator > Work: http://spinn3r.com >