You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Rakesh R (JIRA)" <ji...@apache.org> on 2015/04/29 21:03:06 UTC

[jira] [Commented] (ZOOKEEPER-2126) ClientCnxn.close doesn't wait for eventThread exit which cause out of order log when close Zookeeper client session.

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-2126?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14519959#comment-14519959 ] 

Rakesh R commented on ZOOKEEPER-2126:
-------------------------------------

Thanks [~zxu] and [~surendrasingh].

>From the jira description, it looks like need to find a better way to differentiate the old client and the new client as the shutdown logging happens later. I prefer not to wait for the {{SendThread}} and {{EventThread}} completion instead how about adding the session id in the logs like,
{code}
LOG.info("EventThread shut down for session: 0x{}", Long.toHexString(getSessionId()));

ZooTrace.logTraceMessage(LOG, ZooTrace.getTextTraceLevel(), "SendThread exitedloop for session: 0x" + Long.toHexString(getSessionId());
{code}

> 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
>    Affects Versions: 3.6.0
>            Reporter: zhihai xu
>            Assignee: surendra singh lilhore
>         Attachments: ZOOKEEPER-2126.patch
>
>
> 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)