Kevin Burton wrote:
From what I can tell, a session will only expire if it can't communicate
with the ensemble due to the entire servers failing or the network splitting
preventing a ZK node from seeing the servers.
The ZK ensemble leader expires the client session if it doesn't hear
from the client w/in the timeout specified by the client when the
session was established.
A client will disconnect from a server in the ensemble and attempt
reconnect to another server in the ensemble if it doesn't hear from the
server w/in 2/3 of the specified session timeout.
Then in this case, an application should in theory only care about session
expiration and ZK internal errors (protocol errors, etc).
In general this may be true, but not in all cases.