Author: phunt
Date: Sun Jul 29 05:33:09 2012
New Revision: 1366786
URL: http://svn.apache.org/viewvc?rev=1366786&view=rev
Log:
ZOOKEEPER-1493. C Client: zookeeper_process doesn't invoke completion callback if zookeeper_close
has been called (Michi Mutsuzaki via phunt and mahadev)
Modified:
zookeeper/branches/branch-3.3/CHANGES.txt
zookeeper/branches/branch-3.3/src/c/src/zookeeper.c
Modified: zookeeper/branches/branch-3.3/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/CHANGES.txt?rev=1366786&r1=1366785&r2=1366786&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/CHANGES.txt (original)
+++ zookeeper/branches/branch-3.3/CHANGES.txt Sun Jul 29 05:33:09 2012
@@ -33,6 +33,10 @@ BUGFIXES:
ZOOKEEPER-1521. LearnerHandler initLimit/syncLimit problems
specifying follower socket timeout limits (phunt)
+ ZOOKEEPER-1493. C Client: zookeeper_process doesn't invoke
+ completion callback if zookeeper_close has been called
+ (Michi Mutsuzaki via phunt and mahadev)
+
IMPROVEMENTS:
ZOOKEEPER-1454. Document how to run autoreconf if cppunit is
Modified: zookeeper/branches/branch-3.3/src/c/src/zookeeper.c
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/src/c/src/zookeeper.c?rev=1366786&r1=1366785&r2=1366786&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/src/c/src/zookeeper.c (original)
+++ zookeeper/branches/branch-3.3/src/c/src/zookeeper.c Sun Jul 29 05:33:09 2012
@@ -1949,11 +1949,9 @@ int zookeeper_process(zhandle_t *zh, int
completion_list_t *cptr = dequeue_completion(&zh->sent_requests);
/* [ZOOKEEPER-804] Don't assert if zookeeper_close has been called. */
- if (zh->close_requested == 1) {
- if (cptr) {
- destroy_completion_entry(cptr);
- cptr = NULL;
- }
+ if (zh->close_requested == 1 && cptr == NULL) {
+ LOG_DEBUG(("Completion queue has been cleared by zookeeper_close()"));
+ close_buffer_iarchive(&ia);
return api_epilog(zh,ZINVALIDSTATE);
}
assert(cptr);
|