zhihai xu created ZOOKEEPER-2126:
------------------------------------
Summary: ClientCnxn.close doesn't wait for eventThread exit which
cause out of order log when close Zookeeper client session.
Key: ZOOKEEPER-2126
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2126
Project: ZooKeeper
Issue Type: Improvement
Reporter: zhihai xu
We saw the following out of order log when close Zookeeper client session.
{code}
2015-02-16 06:01:12,985 INFO org.apache.zookeeper.ZooKeeper: Session:
0x24b8df4044005d4 closed
.....................................
2015-02-16 06:01:12,995 INFO org.apache.zookeeper.ClientCnxn: EventThread shut
down
{code}
This logs are very confusing if a new Zookeeper client session is created
between these two logs. We may think new Zookeeper client session shutdown it
EventThread instead of the old closed Zookeeper client session.
Should we wait for sendThread and eventThread died in the ClientCnxn.close?
We can add the following code in ClientCnxn.close.
{code}
sendThread.join(timeout);
eventThread.join(timeout);
{code}
with the change, we won't interleave old closed session with new session.
We can also create a new close API to support this so we won't affect the old
code if people use old close API.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)