Prevent certain state transitions in Java client on close(); improve exception
handling and enhance client testability
----------------------------------------------------------------------------------------------------------------------
Key: ZOOKEEPER-1202
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1202
Project: ZooKeeper
Issue Type: Improvement
Components: java client
Affects Versions: 3.4.0
Reporter: Matthias Spycher
Assignee: Matthias Spycher
ZooKeeper.close() doesn't force the client into a CLOSED state. While the
closing flag ensures that the client will close, its state may end up in
CLOSED, CONNECTING or CONNECTED.
I developed a patch and in the process cleaned up a few other things primarily
to enable testing of state transitions.
- ClientCnxnState is new and enforces certain state transitions
- ZooKeeper.isExpired() is new
- ClientCnxn no longer refers to ZooKeeper, WatchManager is externalized, and
ClientWatchManager includes 3 new methods
- The SendThread terminates the EventThread on a call to close() via the
event-of-death
- Polymorphism is used to handle internal exceptions (SendIOExceptions)
- The patch incorporates ZOOKEEPER-126.patch and prevents close() from blocking
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira