我当时的印象是,即使会话失败了,馆长库也会对所有的动物园管理员操作进行重试。我正在模拟一个例子,在这个情况下,我创建了一个节点,然后将一些数据设置为该节点。然后,在检索数据时,我杀死了会话。我看到馆长能够重新连接到会话,但我认为它也会重试并获得数据,而事实并非如此。是否有任何文件说明何时以及哪些操作主管进行重试。
监视节点的代码:
getAsyncCuratorFramework(curatorFramework)
.watched()
.checkExists()
.forPath(fullNodePath)
.event()
.toCompletableFuture()
.get(jobTimeoutDO.getDuration(), jobTimeoutDO.getTimeUnit());现在,我正在模拟一个测试,在该测试中,我正在观察一个用于节点删除事件的临时节点,并在此之间安排以下调用:
KillSession.kill由于会话被终止,节点将被移除,策展人将再次尝试建立连接。所有这些都很好,而且和预期的一样。但是我也认为策展人会再次尝试并监视节点,当然,如果节点不存在,它可能会抛出一个异常,但我确实再次创建了一个节点。
只是想确认一下,在上述情况下,策展人不会再尝试。顺便说一句,它抛出以下异常:
AsyncEventException发布于 2020-02-26 20:55:07
但我也认为策展人会再试一次观看节点。
这不是重试的工作方式。策展人重试单个ZooKeeper操作。他们不是一个高水平的功能,不会重置手表为您。您正在寻找的是一个策展人的高级食谱管理一个ZNode。看看PersistentNode或NodeCache。
https://stackoverflow.com/questions/60402810
复制相似问题