You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by he...@apache.org on 2012/06/19 02:20:52 UTC
svn commit: r1351541 - in /zookeeper/trunk: CHANGES.txt
src/contrib/zkpython/src/c/zookeeper.c
Author: henry
Date: Tue Jun 19 00:20:51 2012
New Revision: 1351541
URL: http://svn.apache.org/viewvc?rev=1351541&view=rev
Log:
ZOOKEEPER-1431. zkpython async calls leak memory (Kapil Thangavelu and Andre Cruz via henryr)
Modified:
zookeeper/trunk/CHANGES.txt
zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c
Modified: zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1351541&r1=1351540&r2=1351541&view=diff
==============================================================================
--- zookeeper/trunk/CHANGES.txt (original)
+++ zookeeper/trunk/CHANGES.txt Tue Jun 19 00:20:51 2012
@@ -183,6 +183,8 @@ BUGFIXES:
ZOOKEEPER-642. "exceeded deadline by N ms" floods logs (Marc Celani via michim)
+ ZOOKEEPER-1431. zkpython async calls leak memory (Kapil Thangavelu and Andre Cruz via henryr)
+
IMPROVEMENTS:
ZOOKEEPER-1170. Fix compiler (eclipse) warnings: unused imports,
Modified: zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c?rev=1351541&r1=1351540&r2=1351541&view=diff
==============================================================================
--- zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c (original)
+++ zookeeper/trunk/src/contrib/zkpython/src/c/zookeeper.c Tue Jun 19 00:20:51 2012
@@ -437,6 +437,7 @@ void watcher_dispatch(zhandle_t *zzh, in
if (PyObject_CallObject((PyObject*)callback, arglist) == NULL) {
PyErr_Print();
}
+ Py_DECREF(arglist);
if (pyw->permanent == 0 && (type != ZOO_SESSION_EVENT || state < 0)) {
free_pywatcher(pyw);
}
@@ -458,6 +459,7 @@ void void_completion_dispatch(int rc, co
PyObject *arglist = Py_BuildValue("(i,i)", pyw->zhandle, rc);
if (PyObject_CallObject((PyObject*)callback, arglist) == NULL)
PyErr_Print();
+ Py_DECREF(arglist);
free_pywatcher(pyw);
PyGILState_Release(gstate);
}
@@ -475,9 +477,9 @@ void stat_completion_dispatch(int rc, co
PyObject *pystat = build_stat(stat);
PyObject *arglist = Py_BuildValue("(i,i,O)", pyw->zhandle,rc, pystat);
Py_DECREF(pystat);
-
if (PyObject_CallObject((PyObject*)callback, arglist) == NULL)
PyErr_Print();
+ Py_DECREF(arglist);
free_pywatcher(pyw);
PyGILState_Release(gstate);
}
@@ -499,6 +501,7 @@ void data_completion_dispatch(int rc, co
if (PyObject_CallObject((PyObject*)callback, arglist) == NULL)
PyErr_Print();
+ Py_DECREF(arglist);
free_pywatcher(pyw);
PyGILState_Release(gstate);
}
@@ -519,6 +522,7 @@ void strings_completion_dispatch(int rc,
PyObject *arglist = Py_BuildValue("(i,i,O)", pyw->zhandle, rc, pystrings);
if (arglist == NULL || PyObject_CallObject((PyObject*)callback, arglist) == NULL)
PyErr_Print();
+ Py_DECREF(arglist);
}
else
PyErr_Print();
@@ -541,6 +545,7 @@ void string_completion_dispatch(int rc,
PyObject *arglist = Py_BuildValue("(i,i,s)", pyw->zhandle,rc, value);
if (PyObject_CallObject((PyObject*)callback, arglist) == NULL)
PyErr_Print();
+ Py_DECREF(arglist);
free_pywatcher(pyw);
PyGILState_Release(gstate);
}
@@ -566,6 +571,7 @@ void acl_completion_dispatch(int rc, str
if (PyObject_CallObject((PyObject*)callback, arglist) == NULL) {
PyErr_Print();
}
+ Py_DECREF(arglist);
free_pywatcher(pyw);
PyGILState_Release(gstate);
}