gpt4 book ai didi

java - Netflix Curator 交易错误

转载 作者:行者123 更新时间:2023-11-30 07:32:40 27 4
gpt4 key购买 nike

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

CuratorTransaction transaction = curatorFramework.inTransaction();
transaction.create().forPath("/foo")
.and().create().forPath("/foo/123")
.and().create().forPath("/foo")
.and().commit();

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

最佳答案

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

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

if(curatorFramework.checkExists().forPath("/foo") == null){
curatorFramework.create().forPath("/foo");
}

或者,如果应用程序使用事务对于您的应用程序很重要,那么您的应用程序必须控制它不会将两个冲突的操作放入一个事务中。例如,使用在路径上建立索引的 HashMap。

顺便说一句,CuratorTransaction 已被弃用,因此您应该使用 CuratorFramework.transaction()相反。

关于java - Netflix Curator 交易错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35866775/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com