Hi Enrico,

Thanks for your reply.

>In this case usually you use conditional setData, using the 'version' of
>thr znode


what if the caller has no idea on whether the node exist?(see also
my if-else pseudo-code above.)

IIRC if we call `setData` on a non-exist path a NoNodeException
will be thrown.
Best,
tison.


Enrico Olivelli <eolive...@gmail.com> 于2019年8月6日周二 下午8:27写道:

> Il mar 6 ago 2019, 13:47 Zili Chen <wander4...@gmail.com> ha scritto:
>
> > Any ideas?
> >
> >
> > Zili Chen <wander4...@gmail.com> 于2019年7月29日周一 上午11:12写道:
> >
> > > Hi ZooKeepers,
> > >
> > > Currently our transaction mechanism supports doing
> > > create/setData/checkExist/delete in transaction. However, taking this
> > > scenario into consideration, we want to put data in path "/path" but
> > > don't know whether the znode exists or not. Let's say we program as
> > > below
> > >
> > > if (zk.exist(path)) {
> > >   zk.setData(path, data);
> > > } else {
> > >   zk.create(path, data);
> > > }
> >
>
> Do you need to perform other ops in the same transaction?
> In this case usually you use conditional setData, using the 'version' of
> thr znode
>
>
> Enrico
>
> >
> > > if we want to do the check and "put" in transaction, it would be like
> > >
> > > zk.multi(Op.check(path), Op.setData(path, data));
> > >
> > > but we cannot add a "else" branch. ZooKeeper's transaction would all
> > > success or fail.
> > >
> > > Is there any way to do an "if-else" transaction?
> > >
> > > Best,
> > > tison.
> > >
> >
>

Reply via email to