It's in the javadocs... "To create a client(ZooKeeper) object, the application needs to pass a string containing a list of host:port pairs, each corresponding to a ZooKeeper server.
The client object will pick an arbitrary server and try to connect to it. If failed, it will try the next one in the list, until a connection is established, or all the servers have been tried. " On Mon, Jan 5, 2009 at 6:32 PM, Flavio Junqueira <f...@yahoo-inc.com> wrote: > You can pass a comma-separated list of servers (address:port). I couldn't > find a reference in the documentation, but in the code you can check: > ZooKeeper.ZooKeeper() and ClientCnxn.ClientCnxn(). > > -Flavio > > On Jan 5, 2009, at 6:54 PM, Kevin Burton wrote: > >> The ZooKeeper constructor only takes a host and port... not a list of >> servers. >> I assumed you communicated with on server by default, and that server then >> passed you the list of all known servers. >> >> Am I missing something? >> >> Kevin >> >> >> /** >> * @see ZooKeeper(String, int, Watcher, long, byte[]) >> */ >> public ZooKeeper(String host, int sessionTimeout, Watcher watcher) >> throws IOException { >> watchManager.defaultWatcher = watcher; >> cnxn = new ClientCnxn(host, sessionTimeout, this, watchManager); >> } >> >> /** >> * To create a client(ZooKeeper) object, the application needs to pass a >> * string containing a list of host:port pairs, each corresponding to a >> * ZooKeeper server. >> * <p> >> * The client object will pick an arbitrary server and try to connect to >> it. >> * If failed, it will try the next one in the list, until a connection >> is >> * established, or all the servers have been tried. >> * <p> >> * Use {...@link #getSessionId} and {...@link #getSessionPasswd} on an >> established >> * client connection, these values must be passed as sessionId and >> * sessionPasswd respectively if reconnecting. Otherwise, if not >> * reconnecting, use the other constructor which does not require these >> * parameters. >> * >> * @param host >> * comma separated host:port pairs, each corresponding to a >> zk >> * server. eg. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002" >> * @param sessionTimeout >> * session timeout in milliseconds >> * @param watcher >> * a watcher object which will be notified of state changes, >> may >> * also be notified for node events >> * @param sessionId >> * specific session id to use if reconnecting >> * @param sessionPasswd >> * password for this session >> * >> * @throws IOException >> * in cases of network failure >> */ >> public ZooKeeper(String host, int sessionTimeout, Watcher watcher, >> long sessionId, byte[] sessionPasswd) throws IOException { >> watchManager.defaultWatcher = watcher; >> cnxn = new ClientCnxn(host, sessionTimeout, this, watchManager, >> sessionId, sessionPasswd); >> } >> >> >> On Mon, Jan 5, 2009 at 1:51 AM, Flavio Junqueira <f...@yahoo-inc.com> >> wrote: >> >>> Are you guys passing one server to the ZooKeeper constructor or a list of >>> servers? If possible, could you provide your part of the code in which >>> you >>> create a ZooKeeper object? >>> >>> Thanks, >>> -Flavio >>> >>> >>> On Jan 5, 2009, at 10:46 AM, David Yee wrote: >>> >>> I'm seeing this behavior as well, and I'm dealing with it by writing >>>> >>>> custom code to handle the logic of reconnecting to another zookeeper >>>> server. >>>> >>>> it would be nice to get some clarity regarding whether this is expected >>>> behavior or if there is a bug in the client code. >>>> >>>> We've also written code for dealing with other issues when losing a >>>> connection to a zk server. (implict triggering of all watches - since >>>> watches are stored locally on a particlar an server, etc) >>>> >>>> >>>> On Jan 5, 2009, at 12:03 AM, "Kevin Burton" <bur...@spinn3r.com> wrote: >>>> >>>> I'm not observing this behavior... if I shutdown the zookeeper server my >>>>> >>>>> client doesn't reconnect and I get a disconnect event followed by >>>>> eventual >>>>> session expiration. >>>>> >>>>> Which is not the behavior I want :) >>>>> >>>>> "Clients connect to a single ZooKeeper server. The client maintains a >>>>> TCP >>>>> connection through which it sends requests, gets responses, gets watch >>>>> events, and sends heart beats. If the TCP connection to the server >>>>> breaks, >>>>> the client will connect to a different server." >>>>> >>>>> >>>>> I don't see this documented anywhere. >>>>>> >>>>>> I setup 5 zk servers.... if I connect to host1 and am performing some >>>>>> action like watching for file updates, and host1 fails, I *should* be >>>>>> able >>>>>> to connect to hosts2-5 just fine. >>>>>> >>>>>> But the ZooKeeper object doesn't do this for me.... >>>>>> >>>>>> What's the correct behavior here? >>>>>> >>>>>> Kevin >>>>>> >>>>>> >>>>>> -- >>>>> >>>>> Founder/CEO Spinn3r.com >>>>> Location: San Francisco, CA >>>>> AIM/YIM: sfburtonator >>>>> Skype: burtonator >>>>> Work: http://spinn3r.com >>>>> >>>> >>> >> >> >> -- >> Founder/CEO Spinn3r.com >> Location: San Francisco, CA >> AIM/YIM: sfburtonator >> Skype: burtonator >> Work: http://spinn3r.com > >