Author: henry
Date: Tue Oct 19 18:57:02 2010
New Revision: 1024358

URL: http://svn.apache.org/viewvc?rev=1024358&view=rev
Log:
ZOOKEEPER-888: c-client / zkpython: Double free corruption on node
watcher (Austin Shoemaker via henryr)

Modified:
    hadoop/zookeeper/trunk/CHANGES.txt
    hadoop/zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c
    hadoop/zookeeper/trunk/src/contrib/zkpython/src/test/zktestbase.py

Modified: hadoop/zookeeper/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/CHANGES.txt?rev=1024358&r1=1024357&r2=1024358&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/CHANGES.txt (original)
+++ hadoop/zookeeper/trunk/CHANGES.txt Tue Oct 19 18:57:02 2010
@@ -117,6 +117,8 @@ BUGFIXES: 
   ZOOKEEPER-855. clientPortBindAddress should be clientPortAddress
   (Jared Cantwell via fpj)
 
+  ZOOKEEPER-888. c-client / zkpython: Double free corruption on node watcher 
(Austin Shoemaker via henryr)
+
 IMPROVEMENTS:
   ZOOKEEPER-724. Improve junit test integration - log harness information 
   (phunt via mahadev)

Modified: hadoop/zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c
URL: 
http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c?rev=1024358&r1=1024357&r2=1024358&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c (original)
+++ hadoop/zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c Tue Oct 19 
18:57:02 2010
@@ -436,7 +436,7 @@ void watcher_dispatch(zhandle_t *zzh, in
   if (PyObject_CallObject((PyObject*)callback, arglist) == NULL) {
     PyErr_Print();
   }
-  if (pyw->permanent == 0) {
+  if (pyw->permanent == 0 && (type != ZOO_SESSION_EVENT || 
is_unrecoverable(zzh))) {
     free_pywatcher(pyw);
   }
   PyGILState_Release(gstate);
@@ -1395,7 +1395,7 @@ PyObject *pyis_unrecoverable(PyObject *s
     return NULL;
   CHECK_ZHANDLE(zkhid);
   int ret = is_unrecoverable(zhandles[zkhid]);
-  if (ret > 0)
+  if (ret == ZINVALIDSTATE)
     Py_RETURN_TRUE;
   Py_RETURN_FALSE;
 }

Modified: hadoop/zookeeper/trunk/src/contrib/zkpython/src/test/zktestbase.py
URL: 
http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/contrib/zkpython/src/test/zktestbase.py?rev=1024358&r1=1024357&r2=1024358&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/src/contrib/zkpython/src/test/zktestbase.py 
(original)
+++ hadoop/zookeeper/trunk/src/contrib/zkpython/src/test/zktestbase.py Tue Oct 
19 18:57:02 2010
@@ -21,9 +21,11 @@ import unittest, threading, zookeeper
 ZOO_OPEN_ACL_UNSAFE = {"perms":0x1f, "scheme":"world", "id" :"anyone"}
 
 class TestBase(unittest.TestCase):
+    SERVER_PORT = 22182
+    
     def __init__(self,methodName='runTest'):
         unittest.TestCase.__init__(self,methodName)
-        self.host = "localhost:22182"
+        self.host = "localhost:%d" % self.SERVER_PORT
         self.connected = False
         self.handle = -1
         logdir = os.environ.get("ZKPY_LOG_DIR")


Reply via email to