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.4
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.
For more information on JIRA, see: http://www.atlassian.com/software/jira