[ https://issues.apache.org/jira/browse/ZOOKEEPER-1110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13261350#comment-13261350 ]
Michi Mutsuzaki commented on ZOOKEEPER-1110: -------------------------------------------- Hi xiliu, Sorry it took this long to respond! I don't think this is a valid bug. The intention of the original code is to wait for the fd to become writable for a given amount of time, which I think is the right thing to do. This patch will make zookeeper_close() nonblocking; if the fd is not writable, it'll simply return ZOK without actually sending the request. That's not what we want to do. Let me know if I misunderstood your bug report. Otherwise, I'll close this ticket as invalid. Thanks! --Michi > 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.6 > > 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