[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-510?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Patrick Hunt reopened ZOOKEEPER-510:
------------------------------------


Unless I'm missing something there's a problem with this patch, the following 
is incorrect according to the python manual:

+#define ADD_EXCEPTION(x) x = PyErr_NewException("zookeeper."#x, 
ZooKeeperException, NULL); \
+  PyModule_AddObject(module, #x, x);

specifically the ref is not being incremented.

see this example in the following python man page:
http://docs.python.org/extending/extending.html#intermezzo-errors-and-exceptions

    SpamError = PyErr_NewException("spam.error", NULL, NULL);
    Py_INCREF(SpamError);
    PyModule_AddObject(m, "error", SpamError);



> zkpython lumps all exceptions as IOError, needs specialized exceptions for 
> KeeperException types
> ------------------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-510
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-510
>             Project: Zookeeper
>          Issue Type: Bug
>          Components: contrib-bindings
>    Affects Versions: 3.2.0
>            Reporter: Patrick Hunt
>            Assignee: Henry Robinson
>             Fix For: 3.3.0
>
>         Attachments: ZOOKEEPER-510.patch, ZOOKEEPER-510.patch, 
> ZOOKEEPER-510.patch, ZOOKEEPER-510.patch
>
>
> The current zkpython bindings always throw "IOError("text")" exceptions, even 
> for ZK specific exceptions such as NODEEXISTS. This makes it difficult (error 
> prone) to handle exceptions in python code. You can't easily pickup a 
> connection loss vs a node exists for example. Of course you could match the 
> error string, but this seems like a bad idea imo.
> We need to add specific exception types to the python binding that map 
> directly to KeeperException/java types. It would also be useful to include 
> the information provided by the KeeperException (like path in some cases), 
> etc... as part of the error thrown to the python code. Would probably be a 
> good idea to stay as close to java api as possible wrt mapping the errors.

-- 
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