[ https://issues.apache.org/jira/browse/ZOOKEEPER-1436?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13286114#comment-13286114 ]
Mark Gius commented on ZOOKEEPER-1436: -------------------------------------- I'd like to confirm my understanding of this patch, and propose a possible useful extension that may be better off in its own ticket. Confirm: this is purely a notification for the caller. The ZK client code is still looping around trying to reconnect just as before. In other words, if I ignore ZOO_TIMED_OUT_STATE events, the client behavior is unchanged. Possible extension: For zookeeper server clusters which are dynamic, it can be very useful to know before a possible EXPIRE event that the client is having trouble connecting. This gives the caller of the client the chance to re-generate their ZK endpoint list and attempt to recover their session on a new set of hosts. I suppose this might expose itself as some sort of ZOO_TIMEOUT_WARNING or such that fires when the client has been disconnected for SESSION_EXPIRE / 2 or some such thing. Otherwise, I really like this as it gives the caller more information with which to make informed decisions. > Add ZOO_TIMED_OUT_STATE sesion event to notify client about timeout during > reconnection > --------------------------------------------------------------------------------------- > > Key: ZOOKEEPER-1436 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1436 > Project: ZooKeeper > Issue Type: Improvement > Components: c client > Affects Versions: 3.4.3 > Reporter: Thawan Kooburat > Assignee: Thawan Kooburat > Labels: patch > Attachments: ZOOKEEPER-1436.patch, ZOOKEEPER-1436.patch > > > The zookeeper c client knows how long its session will last, and periodically > pings in order to keep that session alive. However, if it loses connection, > it hops from ensemble member to ensemble member trying to reform the session > - even after the session timeout expires. > This patch at a new session event (ZOO_TIMED_OUT_STATE) that notifies the > user that the session timeout has passed, and we have been unable to > reconnect. The event is one-shot per disconnection and get generated from the > C-client library itself. The server has no knowledge of this event. > Example use cases: > 1. Client can try to reconnect to a different set of observers if it unable > to connect to the original set of observers. > 2. Client can quickly stop acting as an active server, since other server may > already taken over the active role while it is trying to reconnect. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira