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:18:44 UTC

svn commit: r1380931 - in /zookeeper/trunk: CHANGES.txt src/c/src/zookeeper.c

Author: michim
Date: Tue Sep  4 23:18:44 2012
New Revision: 1380931

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

Modified:
    zookeeper/trunk/CHANGES.txt
    zookeeper/trunk/src/c/src/zookeeper.c

Modified: zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1380931&r1=1380930&r2=1380931&view=diff
==============================================================================
--- zookeeper/trunk/CHANGES.txt (original)
+++ zookeeper/trunk/CHANGES.txt Tue Sep  4 23:18:44 2012
@@ -234,6 +234,9 @@ BUGFIXES:
   ZOOKEEPER-1328. Misplaced assertion for the test case 'FLELostMessageTest'
   and not identifying misfunctions. (Rakesh R via mahadev)
 
+  ZOOKEEPER-1105 c client zookeeper_close not send CLOSE_OP request to server
+  (lincoln.lee via michim)
+
 IMPROVEMENTS:
 
   ZOOKEEPER-1170. Fix compiler (eclipse) warnings: unused imports,

Modified: zookeeper/trunk/src/c/src/zookeeper.c
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/c/src/zookeeper.c?rev=1380931&r1=1380930&r2=1380931&view=diff
==============================================================================
--- zookeeper/trunk/src/c/src/zookeeper.c (original)
+++ zookeeper/trunk/src/c/src/zookeeper.c Tue Sep  4 23:18:44 2012
@@ -2519,6 +2519,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));