TisonKun created ZOOKEEPER-3290:
-----------------------------------

             Summary: Throw detailed KeeperException when a transaction failed
                 Key: ZOOKEEPER-3290
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3290
             Project: ZooKeeper
          Issue Type: Improvement
          Components: server
    Affects Versions: 3.4.13, 3.5.4
            Reporter: TisonKun
             Fix For: 3.5.5, 3.4.14


Assume we execute the follow statements
{code:java}
ZooKeeper zk = ...;
zk.multi(Arrays.asList(
  Op.check(path1, -1),
  Op.delete(path2, -1)));
{code}

If path1 or path2 didn't exist, we got an exception 
{{KeeperException.NoNodeException}} without which of them doesn't exist.

The reason is when we executed {{PrepRequestProccessor#pRequest}} in 
{{PrepRequestProccessor#L804}}, it processed 
{{KeeperException.NoNodeException}} which contained path info.

However, we generated {{ErrorTxn}} which only contains {{err}} field 
represented error code and lost path info. Maybe a reasonable resolution is 
extend {{ErrorTxn}} to contain path info or a general {{data}} byte array.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to