You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by mi...@apache.org on 2012/09/05 01:26:07 UTC

svn commit: r1380932 - in /zookeeper/branches/branch-3.4: CHANGES.txt src/c/src/zookeeper.c

Author: michim
Date: Tue Sep  4 23:26:07 2012
New Revision: 1380932

URL: http://svn.apache.org/viewvc?rev=1380932&view=rev
Log:
ZOOKEEPER-1105 c client zookeeper_close not send CLOSE_OP request to server (lincoln.lee via michim)

Modified:
    zookeeper/branches/branch-3.4/CHANGES.txt
    zookeeper/branches/branch-3.4/src/c/src/zookeeper.c

Modified: zookeeper/branches/branch-3.4/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.4/CHANGES.txt?rev=1380932&r1=1380931&r2=1380932&view=diff
==============================================================================
--- zookeeper/branches/branch-3.4/CHANGES.txt (original)
+++ zookeeper/branches/branch-3.4/CHANGES.txt Tue Sep  4 23:26:07 2012
@@ -99,6 +99,9 @@ BUGFIXES:
 
   ZOOKEEPER-1481 allow the C cli to run exists with a watcher (phunt via michim)
 
+  ZOOKEEPER-1105 c client zookeeper_close not send CLOSE_OP request to server
+  (lincoln.lee via michim)
+
 IMPROVEMENTS:
 
   ZOOKEEPER-1389. it would be nice if start-foreground used exec $JAVA

Modified: zookeeper/branches/branch-3.4/src/c/src/zookeeper.c
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.4/src/c/src/zookeeper.c?rev=1380932&r1=1380931&r2=1380932&view=diff
==============================================================================
--- zookeeper/branches/branch-3.4/src/c/src/zookeeper.c (original)
+++ zookeeper/branches/branch-3.4/src/c/src/zookeeper.c Tue Sep  4 23:26:07 2012
@@ -2515,6 +2515,22 @@ int zookeeper_close(zhandle_t *zh)
         /* 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);
+
+        /* make sure server has read the close request and sent back a response*/ 
+        struct pollfd fd_s[1];
+        fd_s[0].fd = zh->fd;
+        fd_s[0].events = POLLIN;
+        int ret = poll(fd_s, 1, 1000);
+        if (ret == 0) {
+            LOG_WARN(("Timeout when waitting for server's reply after sending a close request, sessionId=%#llx\n",
+                zh->client_id.client_id));
+        } else if (ret < 0) {
+            LOG_WARN(("System error happens when waitting for server's reply, sessionId=%#llx\n",
+                zh->client_id.client_id));
+        } else {
+            // do nothing
+        }
+
     }else{
         LOG_INFO(("Freeing zookeeper resources for sessionId=%#llx\n",
                 zh->client_id.client_id));