Hi Julien,
take a look at the FAQ for some background:
http://wiki.apache.org/hadoop/ZooKeeper/FAQ#A3
Basically when your client connects to the server it provides a
"timeout" value. If the server doesn't hear from your client within this
timeout period (we do heartbeating for you in a background thread, you
don't have to worry about this) then it will expire the session.
http://hadoop.apache.org/zookeeper/docs/current/zookeeperProgrammers.html#ch_zkSessions
You have a watcher for the session - it will be notified both on
disconnect but also when/if the session is expired. An expired session
is invalid, if this happens you have to create a new session. This is
different from a disconnect notification, where you just wait for the
client library to reconnect you to the cluster (say you lose
connectivity to the server)
Patrick
On 04/21/2010 01:44 AM, Julien Vey wrote:
Hi all,
I'm currently working with ZooKeeper in CXF D-OSGI and i'm facing a
problem that would require your help.
When a client is connected to the ZooKeeper server, and the connection
is lost, it throws a ConnectionLossException.
The problem is when the connection is back, the client doesn't reconnect
itself. I can see the following trace on the server
2010-04-20 17:44:21,526 - INFO [NIOServerCxn.Factory:>
0.0.0.0/0.0.0.0:2181:nioservercnxn$fact...@251] - Accepted socket
connection from /129.183.128.230:60471
2010-04-20 17:44:21,526 - INFO [NIOServerCxn.Factory:
0.0.0.0/0.0.0.0:2181:nioserverc...@742] - Client attempting to renew
session0x1281ba54e900005 at /129.183.128.230:60471
2010-04-20 17:44:21,527 - INFO [NIOServerCxn.Factory:
0.0.0.0/0.0.0.0:2181:nioserverc...@1424] - Invalid session
0x1281ba54e900005 for client /129.183.128.230:60471, probably expired
2010-04-20 17:44:21,527 - INFO [NIOServerCxn.Factory:
0.0.0.0/0.0.0.0:2181:nioserverc...@1286] - Closed socket connection for
client /129.183.128.230:60471 which had sessionid 0x1281ba54e900005
The client tries to reconnect with an expired session id.
Is it possible to configure zookeeper in order that it accepts this
connection by recreating a new session, or maybe something else that
would make the reconnection works ?
Thanks in advance for your help
Julien.