策展人库什么时候重试

When does curator lib does retry

我的印象是即使会话丢失,馆长库也会重试所有 Zookeeper 操作。我正在模拟一个案例,我创建了一个节点,然后将一些数据设置到该节点。然后在检索数据时我终止了会话。我看到策展人能够重新连接到会话,但我认为它也会重试并获取并非如此的数据。是否有关于馆长重试的确切时间和重试操作的文档。

监视节点的代码:

getAsyncCuratorFramework(curatorFramework)
            .watched()
            .checkExists()
            .forPath(fullNodePath)
            .event()
            .toCompletableFuture()
            .get(jobTimeoutDO.getDuration(), jobTimeoutDO.getTimeUnit());

现在我正在模拟一个测试,我正在观察一个临时节点的节点删除事件,我在两者之间安排了以下调用:

KillSession.kill

由于会话被终止,节点将被删除,策展人将再次尝试建立连接。所有这些都按预期工作正常。但我也认为策展人将重试并再次观察节点当然如果节点不存在它可能会抛出异常但我确实再次创建了一个节点。

只是想确认在上面的场景中馆长不会重试。顺便说一句,它抛出以下异常:

AsyncEventException

But I also thought that the curator will retry and watch the node again

这不是重试的方式。 Curator 中的重试重试单个 ZooKeeper 操作。它们不是高级功能,不会为您重置手表。您正在寻找的是 Curator 管理 ZNode 的高级方法之一。看看 PersistentNode or NodeCache.