【发布时间】:2020-02-25 20:41:35
【问题描述】:
我的印象是,即使会话丢失,curator lib 也会重试所有 Zookeeper 操作。我正在模拟一个我创建了一个节点然后将一些数据设置到该节点的情况。然后在检索数据时我终止了会话。我看到策展人能够重新连接到会话,但我认为它也会重试并获取数据,但事实并非如此。是否有任何文档说明究竟何时以及为哪些操作馆长重试。
监视节点的代码:
getAsyncCuratorFramework(curatorFramework)
.watched()
.checkExists()
.forPath(fullNodePath)
.event()
.toCompletableFuture()
.get(jobTimeoutDO.getDuration(), jobTimeoutDO.getTimeUnit());
现在我正在模拟一个测试,在该测试中,我正在监视一个临时节点的节点删除事件,并在其间安排以下调用:
KillSession.kill
由于会话被终止,节点将被删除,curator 将尝试再次建立连接。所有这些都可以正常工作并且符合预期。但我也认为策展人会重试并再次观察节点,当然如果节点不存在,它可能会抛出异常,但我确实再次创建了一个节点。
只是想确认在上述情况下策展人不会重试。顺便说一句,它会引发以下异常:
AsyncEventException
【问题讨论】:
-
我不太了解你。 “我杀死了会话”是什么意思? Curator 肯定会使用提供的重试策略重试每个操作。能提供一个测试用例吗?
-
用示例代码和测试场景编辑了我的问题,如果您需要更多信息,请告诉我
标签: apache-zookeeper apache-curator