You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "TisonKun (JIRA)" <ji...@apache.org> on 2019/02/26 08:11:00 UTC
[jira] [Created] (ZOOKEEPER-3290) Throw detailed KeeperException
when a transaction failed
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)