clients need to make sure they move off of a dead server on to a new one to keep their connection alive, so generally if the client hasn't heard from the server in 2/3 * sessionTimeout it will try to connect to someone else. if it waited the whole 4 seconds, when connected to an active server it would be pronounced dead on arrival.
ben On Wed, Nov 2, 2016 at 5:11 PM, Whitney, Adam <adam.whit...@sony.com> wrote: > (Sorry if this is a repost … I got a strange response to my original email so > I’m not sure if it went through or not) > > I have a zookeeper cluster with 3 nodes and tick time set to 2s > > When a client connects to the cluster I see a log entry like this: > > INFO | Session establishment complete on server XXX, sessionid = XXX, > negotiated timeout = 4000 | org.apache.zookeeper.ClientCnxn | > main-SendThread(XXX:2181) > > Notice the "negotiated timeout = 4000" > > But about once a day I see a log entry like this: > > INFO | Client session timed out, have not heard from server in 2953ms for > sessionid XXX, closing socket connection and attempting reconnect | > org.apache.zookeeper.ClientCnxn | main-SendThread(XXX:2181) > > Why would the client (apparently) timeout the session after only 2953ms if > the negotiated timeout was 4000ms? >