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. > > > > > >