首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netflix Curator事务错误

Netflix Curator事务错误
EN

Stack Overflow用户
提问于 2016-03-08 19:58:50
回答 1查看 97关注 0票数 1

创建路径时,我在以下代码中遇到NodeExists错误。

代码语言:javascript
复制
CuratorTransaction transaction = curatorFramework.inTransaction();
transaction.create().forPath("/foo")
        .and().create().forPath("/foo/123")
        .and().create().forPath("/foo")
        .and().commit();

因此,在这里,它试图在第一次创建foo之后再次创建foo。有没有什么方法可以在创建路径时检查事务的状态,以便在事务/foo中创建存在,然后它就不会再次创建。

EN

回答 1

Stack Overflow用户

发布于 2016-03-09 19:01:08

简短的回答是否定的,不可能检查你是否试图创建两次路径。原因是您将整个“blob”作为一个事务提交给zookeeper,这在广义上意味着每个操作都将同时完成。

至少有两种不同的方法来解决这个问题,要么将每个操作作为单独的操作发送,在这种情况下,您可以这样做:

代码语言:javascript
复制
if(curatorFramework.checkExists().forPath("/foo") == null){
  curatorFramework.create().forPath("/foo");
}

或者,如果使用事务对您的应用程序很重要,则应用程序必须控制不在一个事务中放置两个冲突的操作。例如通过使用在路径上索引的HashMap。

另外,CuratorTransaction已被弃用,因此您应该使用CuratorFramework.transaction()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35866775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档