You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Patrick Hunt (Updated) (JIRA)" <ji...@apache.org> on 2011/11/17 06:30:52 UTC

[jira] [Updated] (ZOOKEEPER-1110) c interface zookeeper_close close fd too quickly.

     [ https://issues.apache.org/jira/browse/ZOOKEEPER-1110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Patrick Hunt updated ZOOKEEPER-1110:
------------------------------------

    Fix Version/s:     (was: 3.3.4)
                   3.3.5
    
> c interface zookeeper_close close fd too quickly.
> -------------------------------------------------
>
>                 Key: ZOOKEEPER-1110
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1110
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: c client
>    Affects Versions: 3.3.3
>         Environment: linux platform.
>            Reporter: xiliu
>             Fix For: 3.3.5
>
>   Original Estimate: 0.5h
>  Remaining Estimate: 0.5h
>
> The correct step about close client is the client send CLOSE_OP to the server, wait for several seconds, the server will process the terminal request and close the fd.
> But the zookeeper_close interface is wrong, because the adaptor_send_queue(zh, 3000) (line 2332), will first wait the timeout then send the request.
> The right order is first send the request then wait the timeout. I change as follow:
> $svn diff src/c/src/zookeeper.c
> Index: src/c/src/zookeeper.c
> ===================================================================
> --- src/c/src/zookeeper.c       (revision 1140451)
> +++ src/c/src/zookeeper.c       (working copy)
> @@ -2329,7 +2329,8 @@
>          /* make sure the close request is sent; we set timeout to an arbitrary
>           * (but reasonable) number of milliseconds since we want the call to block*/
> -        rc=adaptor_send_queue(zh, 3000);
> +        rc=adaptor_send_queue(zh, 0);
> +        sleep(3);
>      }else{
>          LOG_INFO(("Freeing zookeeper resources for sessionId=%#llx\n",
>                  zh->client_id.client_id));
>  

--
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