Author: mahadev Date: Wed Aug 11 18:30:23 2010 New Revision: 984518 URL: http://svn.apache.org/viewvc?rev=984518&view=rev Log: ZOOKEEPER-772. zkpython segfaults when watcher from async get children is invoked. (henry robinson via mahadev)
Modified: hadoop/zookeeper/branches/branch-3.3/CHANGES.txt hadoop/zookeeper/branches/branch-3.3/src/contrib/zkpython/src/c/zookeeper.c hadoop/zookeeper/branches/branch-3.3/src/contrib/zkpython/src/test/get_set_test.py Modified: hadoop/zookeeper/branches/branch-3.3/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.3/CHANGES.txt?rev=984518&r1=984517&r2=984518&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.3/CHANGES.txt (original) +++ hadoop/zookeeper/branches/branch-3.3/CHANGES.txt Wed Aug 11 18:30:23 2010 @@ -9,6 +9,9 @@ BUGFIXES: ZOOKEEPER-790. Last processed zxid set prematurely while establishing leadership (flavio via mahadev) + ZOOKEEPER-772. zkpython segfaults when watcher from async get children + is invoked. (henry robinson via mahadev) + IMPROVEMENTS: ZOOKEEPER-789. Improve FLE log messages (flavio via phunt) Modified: hadoop/zookeeper/branches/branch-3.3/src/contrib/zkpython/src/c/zookeeper.c URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.3/src/contrib/zkpython/src/c/zookeeper.c?rev=984518&r1=984517&r2=984518&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.3/src/contrib/zkpython/src/c/zookeeper.c (original) +++ hadoop/zookeeper/branches/branch-3.3/src/contrib/zkpython/src/c/zookeeper.c Wed Aug 11 18:30:23 2010 @@ -842,7 +842,7 @@ PyObject *pyzoo_aget_children(PyObject * int err = zoo_awget_children( zhandles[zkhid], path, get_watch != Py_None ? watcher_dispatch : NULL, - pyw, + get_pyw, strings_completion_dispatch, pyw); if (err != ZOK) { Modified: hadoop/zookeeper/branches/branch-3.3/src/contrib/zkpython/src/test/get_set_test.py URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.3/src/contrib/zkpython/src/test/get_set_test.py?rev=984518&r1=984517&r2=984518&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.3/src/contrib/zkpython/src/test/get_set_test.py (original) +++ hadoop/zookeeper/branches/branch-3.3/src/contrib/zkpython/src/test/get_set_test.py Wed Aug 11 18:30:23 2010 @@ -155,5 +155,34 @@ class GetSetTest(zktestbase.TestBase): self.assertEqual(len(self.children), 1, "Expected to find 1 child, got " + str(len(self.children))) + def test_async_getchildren_with_watcher(self): + self.ensureCreated("/zk-python-getchildrentest", flags=0) + self.ensureCreated("/zk-python-getchildrentest/child") + + watched = [] + + def watcher(*args): + self.cv.acquire() + watched.append(args) + self.cv.notify() + self.cv.release() + + def children_callback(*args): + self.cv.acquire() + self.cv.notify() + self.cv.release() + + zookeeper.aget_children( + self.handle, "/zk-python-getchildrentest", watcher, children_callback) + + self.cv.acquire() + self.cv.wait() + self.cv.release() + + self.cv.acquire() + self.ensureCreated("/zk-python-getchildrentest/child2") + self.cv.wait(15) + self.assertTrue(watched) + if __name__ == '__main__': unittest.main()