You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ph...@apache.org on 2009/10/02 02:26:15 UTC

svn commit: r820850 - in /hadoop/zookeeper/trunk: CHANGES.txt src/contrib/zkpython/src/c/zookeeper.c

Author: phunt
Date: Fri Oct  2 00:26:14 2009
New Revision: 820850

URL: http://svn.apache.org/viewvc?rev=820850&view=rev
Log:
ZOOKEEPER-538. zookeeper.async causes python to segfault

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

Modified: hadoop/zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/CHANGES.txt?rev=820850&r1=820849&r2=820850&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/CHANGES.txt (original)
+++ hadoop/zookeeper/trunk/CHANGES.txt Fri Oct  2 00:26:14 2009
@@ -79,6 +79,9 @@
   ZOOKEEPER-420. build/test should not require install in zkpython
   (henry robinson via phunt)
 
+  ZOOKEEPER-538. zookeeper.async causes python to segfault
+  (henry robinson via phunt)
+
 IMPROVEMENTS:
   ZOOKEEPER-473. cleanup junit tests to eliminate false positives due to
   "socket reuse" and failure to close client (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=820850&r1=820849&r2=820850&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c (original)
+++ hadoop/zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c Fri Oct  2 00:26:14 2009
@@ -205,6 +205,8 @@
 {
   PyGILState_STATE gstate;
   pywatcher_t *pyw = (pywatcher_t*)data;
+  if (pyw == NULL)
+    return;
   PyObject *callback = pyw->callback;
   gstate = PyGILState_Ensure();
   PyObject *arglist = Py_BuildValue("(i,i)", pyw->zhandle, rc);
@@ -218,6 +220,8 @@
 {
   PyGILState_STATE gstate;
   pywatcher_t *pyw = (pywatcher_t*)data;
+  if (pyw == NULL)
+    return;
   PyObject *callback = pyw->callback;
   gstate = PyGILState_Ensure();
   PyObject *arglist = Py_BuildValue("(i,i,N)", pyw->zhandle,rc, build_stat(stat));
@@ -231,6 +235,8 @@
 {
   PyGILState_STATE gstate;
   pywatcher_t *pyw = (pywatcher_t*)data;
+  if (pyw == NULL)
+    return;
   PyObject *callback = pyw->callback;
   gstate = PyGILState_Ensure();
   PyObject *arglist = Py_BuildValue("(i,i,s#,O)", pyw->zhandle,rc, value,value_len, build_stat(stat));
@@ -244,6 +250,8 @@
 {
   PyGILState_STATE gstate;
   pywatcher_t *pyw = (pywatcher_t*)data;
+  if (pyw == NULL)
+    return;
   PyObject *callback = pyw->callback;
   gstate = PyGILState_Ensure();
   PyObject *arglist = Py_BuildValue("(i,i,O)", pyw->zhandle,rc, build_string_vector(strings));
@@ -257,6 +265,8 @@
 {
   PyGILState_STATE gstate;
   pywatcher_t *pyw = (pywatcher_t*)data;
+  if (pyw == NULL)
+    return;
   PyObject *callback = pyw->callback;
   gstate = PyGILState_Ensure();
   PyObject *arglist = Py_BuildValue("(i,i,s)", pyw->zhandle,rc, value);
@@ -270,6 +280,8 @@
 {
   PyGILState_STATE gstate;
   pywatcher_t *pyw = (pywatcher_t*)data;
+  if (pyw == NULL)
+    return;
   PyObject *callback = pyw->callback;
   gstate = PyGILState_Ensure();
   PyObject *arglist = Py_BuildValue("(i,i,O,O)", pyw->zhandle,rc, build_acls(acl), build_stat(stat));
@@ -299,7 +311,7 @@
 			 valuelen,
 			 pyacls == Py_None ? NULL : &acl,
 			 flags,
-			 completion_callback != Py_None ? string_completion_dispatch : NULL,
+			 string_completion_dispatch,
 			 completion_callback != Py_None ? create_pywatcher(zkhid, completion_callback,0 ) : NULL );
     
   free_acls(&acl);
@@ -322,7 +334,7 @@
   int err = zoo_adelete( zhandles[zkhid],
 			 path,
 			 version,
-			 completion_callback != Py_None ? void_completion_dispatch : NULL,
+			 void_completion_dispatch,
 			 completion_callback != Py_None ? create_pywatcher(zkhid, 
 									   completion_callback,
 									   0 ) : NULL );
@@ -349,7 +361,7 @@
 			  path,
 			  exists_watch != Py_None ? watcher_dispatch : NULL,
 			  exists_watch != Py_None ? create_pywatcher(zkhid, exists_watch,0) : NULL,
-			  (completion_callback != Py_None) ? stat_completion_dispatch : NULL,
+			  stat_completion_dispatch,
 			  (completion_callback != Py_None) ? create_pywatcher(zkhid, completion_callback,0) : NULL );
     
   if (err != ZOK)
@@ -374,7 +386,7 @@
 		       path,
 		       get_watch != Py_None ? watcher_dispatch : NULL,
 		       get_watch != Py_None ? create_pywatcher(zkhid, get_watch,0) : NULL,
-		       completion_callback != Py_None ? data_completion_dispatch : NULL,
+		       data_completion_dispatch,
 		       completion_callback != Py_None ? 
 		       create_pywatcher(zkhid, completion_callback,0 ) : NULL );
     
@@ -399,7 +411,7 @@
 		      buffer,
 		      buflen,
 		      version,
-		      completion_callback != Py_None ? stat_completion_dispatch : NULL,
+		      stat_completion_dispatch,
 		      completion_callback != Py_None ? create_pywatcher(zkhid, 
 									completion_callback,
 									0 ) : NULL );
@@ -426,7 +438,7 @@
 				path,
 				get_watch != Py_None ? watcher_dispatch : NULL,
 				get_watch != Py_None ? create_pywatcher(zkhid, get_watch,0) : NULL,
-				completion_callback != Py_None ? strings_completion_dispatch : NULL,
+				strings_completion_dispatch,
 				completion_callback != Py_None ? 
 				create_pywatcher(zkhid, completion_callback,0) : NULL );    
   if (err != ZOK)
@@ -448,7 +460,7 @@
 
   int err = zoo_async( zhandles[zkhid],
 		       path,
-		       completion_callback != Py_None ? string_completion_dispatch : NULL,
+		       string_completion_dispatch,
 		       completion_callback != Py_None ? 
 		       create_pywatcher(zkhid, completion_callback,0) : NULL );    
   if (err != ZOK)
@@ -470,7 +482,7 @@
 
   int err = zoo_aget_acl( zhandles[zkhid],
 			  path,
-			  completion_callback != Py_None ? acl_completion_dispatch : NULL,
+			  acl_completion_dispatch,
 			  completion_callback != Py_None ? 
 			  create_pywatcher(zkhid, completion_callback,0) : NULL );
     
@@ -497,7 +509,7 @@
 			  path,
 			  version,
 			  &aclv,
-			  completion_callback != Py_None ? void_completion_dispatch : NULL,
+			  void_completion_dispatch,
 			  completion_callback != Py_None ? 
 			  create_pywatcher(zkhid, completion_callback,0) : NULL );
   free_acls(&aclv);