Per mailing list discussion:
the client only finds out about session expiration events when the client reconnects to the cluster. if zk tells a client that its session is expired, the ephemerals that correspond to that session will already be cleaned up.
- deletion of an ephemeral file due to loss of client connection will occur
after the client gets a connection loss
- deletion of an ephemeral file will precede delivery of a session
expiration event to the owner
So session expirations means two things here : server view(ephemeral clean up) & client view(event delivery) , there are
no guarantee how long it will take in between, correct?
I guess the confusion rises from the documention which doesn't distinguish these two concepts, e.g. in the javadoc http://hadoop.apache.org/zookeeper/docs/r3.3.1/api/index.html
An ephemeral node will be removed by the ZooKeeper automatically when the session associated with the creation of the node expires.
It is actually refering to the server view not the client view.