[ https://issues.apache.org/jira/browse/ZOOKEEPER-921?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nicholas Knight updated ZOOKEEPER-921: -------------------------------------- Status: Patch Available (was: Open) So, I was going to do a more comprehensive error checking patch, but after a brief journey through the source for zookeeper's C bindings, the Java API docs, and a bit of the java server code, the exact rules for what _does_ constitute a valid ACL are completely unclear to me, so for now I'm limiting this to what I feel sure is at least "more correct" than what we already have. Note that while there's no _new_ test included in this patch, {{acl.py:ACLTest.test_invalid_acl2()}} _should_ have been catching this issue, but a rogue comma prevented it from running correctly. This patch removes the rogue comma. Without the {{Py_None}} -> {{NULL}} change, the fixed test fails (well, actually, segfaults, at least on OS X), and with the change, it passes. > zkPython incorrectly checks for existence of required ACL elements > ------------------------------------------------------------------ > > Key: ZOOKEEPER-921 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-921 > Project: Zookeeper > Issue Type: Bug > Components: contrib-bindings > Affects Versions: 3.3.1, 3.4.0 > Environment: Mac OS X 10.6.4, included Python 2.6.1 > Reporter: Nicholas Knight > Assignee: Nicholas Knight > Fix For: 3.3.3, 3.4.0 > > Attachments: zktest.py > > > Calling {{zookeeper.create()}} seems, under certain circumstances, to be > corrupting a subsequent call to Python's {{logging}} module. > Specifically, if the node does not exist (but its parent does), I end up with > a traceback like this when I try to make the logging call: > {noformat} > Traceback (most recent call last): > File "zktest.py", line 21, in <module> > logger.error("Boom?") > File > "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/logging/__init__.py", > line 1046, in error > if self.isEnabledFor(ERROR): > File > "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/logging/__init__.py", > line 1206, in isEnabledFor > return level >= self.getEffectiveLevel() > File > "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/logging/__init__.py", > line 1194, in getEffectiveLevel > while logger: > TypeError: an integer is required > {noformat} > But if the node already exists, or the parent does not exist, I get the > appropriate NodeExists or NoNode exceptions. > I'll be attaching a test script that can be used to reproduce this behavior. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.