You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@zookeeper.apache.org by Zili Chen <wa...@gmail.com> on 2019/08/24 20:19:08 UTC

[RFR] ZOOKEEPER-3290: Throw detailed KeeperException when multi-op failed

Hi ZooKeepers,

ZOOKEEPER-3290 has been revived and here is its pull request[1].

Basically it extends field of ErrorTxn/ErrorResponse/ErrorResult to
reflect accurate path info when a transaction failed. For example,
assumed we do check1(path1)-create1(path2) and fail with
NoNodeException, previously we don't know it is because absence of
path1? or path2? or parent of one of them? Now we will throw a
KeeperException with the accurate path that cause it.

For instance,

    ZooKeeper zk = new ZooKeeper(...);

    zk.multi(List.of(
        Op.check("/path1", -1),
        Op.create("/path2", ...)));

formerly throw with

Exception in thread "main"
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
NoNode

but now

Exception in thread "main"
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
NoNode for /path1

Theoretically Jute is fine with this change so that we don't need to worry
about compatibility issue. Please checkout the branch if you are interested
in this feature.

Any feedback includes things work as expected is welcome.

Best,
tison.

[1] https://github.com/apache/zookeeper/pull/839

Re: [RFR] ZOOKEEPER-3290: Throw detailed KeeperException when multi-op failed

Posted by Enrico Olivelli <eo...@gmail.com>.
Zili,
Thank you for driving this.

We must ensure that that change does not break 100% compatibility with 3.4
client.

The best way to prove it is to setup some integration test that tests a
compatibility matrix, it will be an huge work.

In absence of that facility we need some Jute expert to review the change.
Personally I don't have much cycles to study jute these days.


Enrico

Il gio 12 set 2019, 01:37 Zili Chen <wa...@gmail.com> ha scritto:

> I met this issue again when working on Pravega[1], a project using
> ZooKeeper.
>
> I think it is nice to have that we throw the exactly path that cause the
> multi-op fails.
>
> Could you help to review the pull request?
>
> Best,
> tison.
>
> [1] https://github.com/pravega/pravega/pull/4140#discussion_r322096138
>
>
> Zili Chen <wa...@gmail.com> 于2019年8月25日周日 上午4:19写道:
>
> > Hi ZooKeepers,
> >
> > ZOOKEEPER-3290 has been revived and here is its pull request[1].
> >
> > Basically it extends field of ErrorTxn/ErrorResponse/ErrorResult to
> > reflect accurate path info when a transaction failed. For example,
> > assumed we do check1(path1)-create1(path2) and fail with
> > NoNodeException, previously we don't know it is because absence of
> > path1? or path2? or parent of one of them? Now we will throw a
> > KeeperException with the accurate path that cause it.
> >
> > For instance,
> >
> >     ZooKeeper zk = new ZooKeeper(...);
> >
> >     zk.multi(List.of(
> >         Op.check("/path1", -1),
> >         Op.create("/path2", ...)));
> >
> > formerly throw with
> >
> > Exception in thread "main"
> > org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
> > NoNode
> >
> > but now
> >
> > Exception in thread "main"
> > org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
> > NoNode for /path1
> >
> > Theoretically Jute is fine with this change so that we don't need to
> worry
> > about compatibility issue. Please checkout the branch if you are
> > interested
> > in this feature.
> >
> > Any feedback includes things work as expected is welcome.
> >
> > Best,
> > tison.
> >
> > [1] https://github.com/apache/zookeeper/pull/839
> >
>

Re: [RFR] ZOOKEEPER-3290: Throw detailed KeeperException when multi-op failed

Posted by Enrico Olivelli <eo...@gmail.com>.
Zili,
Thank you for driving this.

We must ensure that that change does not break 100% compatibility with 3.4
client.

The best way to prove it is to setup some integration test that tests a
compatibility matrix, it will be an huge work.

In absence of that facility we need some Jute expert to review the change.
Personally I don't have much cycles to study jute these days.


Enrico

Il gio 12 set 2019, 01:37 Zili Chen <wa...@gmail.com> ha scritto:

> I met this issue again when working on Pravega[1], a project using
> ZooKeeper.
>
> I think it is nice to have that we throw the exactly path that cause the
> multi-op fails.
>
> Could you help to review the pull request?
>
> Best,
> tison.
>
> [1] https://github.com/pravega/pravega/pull/4140#discussion_r322096138
>
>
> Zili Chen <wa...@gmail.com> 于2019年8月25日周日 上午4:19写道:
>
> > Hi ZooKeepers,
> >
> > ZOOKEEPER-3290 has been revived and here is its pull request[1].
> >
> > Basically it extends field of ErrorTxn/ErrorResponse/ErrorResult to
> > reflect accurate path info when a transaction failed. For example,
> > assumed we do check1(path1)-create1(path2) and fail with
> > NoNodeException, previously we don't know it is because absence of
> > path1? or path2? or parent of one of them? Now we will throw a
> > KeeperException with the accurate path that cause it.
> >
> > For instance,
> >
> >     ZooKeeper zk = new ZooKeeper(...);
> >
> >     zk.multi(List.of(
> >         Op.check("/path1", -1),
> >         Op.create("/path2", ...)));
> >
> > formerly throw with
> >
> > Exception in thread "main"
> > org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
> > NoNode
> >
> > but now
> >
> > Exception in thread "main"
> > org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
> > NoNode for /path1
> >
> > Theoretically Jute is fine with this change so that we don't need to
> worry
> > about compatibility issue. Please checkout the branch if you are
> > interested
> > in this feature.
> >
> > Any feedback includes things work as expected is welcome.
> >
> > Best,
> > tison.
> >
> > [1] https://github.com/apache/zookeeper/pull/839
> >
>

Re: [RFR] ZOOKEEPER-3290: Throw detailed KeeperException when multi-op failed

Posted by Zili Chen <wa...@gmail.com>.
I met this issue again when working on Pravega[1], a project using
ZooKeeper.

I think it is nice to have that we throw the exactly path that cause the
multi-op fails.

Could you help to review the pull request?

Best,
tison.

[1] https://github.com/pravega/pravega/pull/4140#discussion_r322096138


Zili Chen <wa...@gmail.com> 于2019年8月25日周日 上午4:19写道:

> Hi ZooKeepers,
>
> ZOOKEEPER-3290 has been revived and here is its pull request[1].
>
> Basically it extends field of ErrorTxn/ErrorResponse/ErrorResult to
> reflect accurate path info when a transaction failed. For example,
> assumed we do check1(path1)-create1(path2) and fail with
> NoNodeException, previously we don't know it is because absence of
> path1? or path2? or parent of one of them? Now we will throw a
> KeeperException with the accurate path that cause it.
>
> For instance,
>
>     ZooKeeper zk = new ZooKeeper(...);
>
>     zk.multi(List.of(
>         Op.check("/path1", -1),
>         Op.create("/path2", ...)));
>
> formerly throw with
>
> Exception in thread "main"
> org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
> NoNode
>
> but now
>
> Exception in thread "main"
> org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
> NoNode for /path1
>
> Theoretically Jute is fine with this change so that we don't need to worry
> about compatibility issue. Please checkout the branch if you are
> interested
> in this feature.
>
> Any feedback includes things work as expected is welcome.
>
> Best,
> tison.
>
> [1] https://github.com/apache/zookeeper/pull/839
>

Re: [RFR] ZOOKEEPER-3290: Throw detailed KeeperException when multi-op failed

Posted by Zili Chen <wa...@gmail.com>.
I met this issue again when working on Pravega[1], a project using
ZooKeeper.

I think it is nice to have that we throw the exactly path that cause the
multi-op fails.

Could you help to review the pull request?

Best,
tison.

[1] https://github.com/pravega/pravega/pull/4140#discussion_r322096138


Zili Chen <wa...@gmail.com> 于2019年8月25日周日 上午4:19写道:

> Hi ZooKeepers,
>
> ZOOKEEPER-3290 has been revived and here is its pull request[1].
>
> Basically it extends field of ErrorTxn/ErrorResponse/ErrorResult to
> reflect accurate path info when a transaction failed. For example,
> assumed we do check1(path1)-create1(path2) and fail with
> NoNodeException, previously we don't know it is because absence of
> path1? or path2? or parent of one of them? Now we will throw a
> KeeperException with the accurate path that cause it.
>
> For instance,
>
>     ZooKeeper zk = new ZooKeeper(...);
>
>     zk.multi(List.of(
>         Op.check("/path1", -1),
>         Op.create("/path2", ...)));
>
> formerly throw with
>
> Exception in thread "main"
> org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
> NoNode
>
> but now
>
> Exception in thread "main"
> org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
> NoNode for /path1
>
> Theoretically Jute is fine with this change so that we don't need to worry
> about compatibility issue. Please checkout the branch if you are
> interested
> in this feature.
>
> Any feedback includes things work as expected is welcome.
>
> Best,
> tison.
>
> [1] https://github.com/apache/zookeeper/pull/839
>