Kazuaki Banzai created ZOOKEEPER-2496:
-----------------------------------------
Summary: When inside a transaction, some exceptions do not have
path information set.
Key: ZOOKEEPER-2496
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2496
Project: ZooKeeper
Issue Type: Bug
Affects Versions: 3.5.1, 3.4.8
Reporter: Kazuaki Banzai
If a client tries to execute some illegal operations inside a transaction,
ZooKeeper throws an exception.
Some exceptions such as NodeExistsException should have a path to indicate
where the exception occurred.
ZooKeeper clients can get the path by calling method getPath.
However, this method returns null if the exception occurs inside a transaction.
For example, when a client calls create /a and create /a in a transaction,
ZooKeeper throws NodeExistsException but getPath returns null.
In normal operation (outside transactions), the path information is set
correctly.
The patch only shows this bug occurs with NoNode exception and NodeExists
exception,
but this bug seems to occur with any exception which needs a path information:
When an error occurred in a transaction, ZooKeeper creates an ErrorResult
instance to represent error result.
However, the ErrorResult class doesn't have a field for a path where an error
occurred(See src/java/main/org/apache/zookeeper/OpResult.java for more details).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)