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

Reply via email to