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.

Reply via email to