У меня сложилось впечатление, что куратор lib сделает повтор для всех операций Zookeeper, даже если сеанс потерян. Я моделировал случай, когда я создал узел и затем установил некоторые данные для этого узла. Затем при получении данных я убил сессию. Я вижу, что куратор может повторно подключиться к сеансу, но я подумал, что он также попытается и получит данные, которых не было. Есть ли документация относительно того, когда именно и для каких операций куратор делает повторную попытку.
Код, который следит за узлом:
getAsyncCuratorFramework(curatorFramework)
.watched()
.checkExists()
.forPath(fullNodePath)
.event()
.toCompletableFuture()
.get(jobTimeoutDO.getDuration(), jobTimeoutDO.getTimeUnit());
Теперь я имитирую тест, в котором я наблюдаю эфемерное узел для события удаления узла, и я планирую следующий вызов между:
KillSession.kill
Поскольку сеанс был прерван, узел будет удален, и куратор попытается установить sh соединение снова. Все это работает нормально и, как и ожидалось. Но я также подумал, что куратор попытается повторить и снова просмотреть узел, конечно, если узел не существует, он может выдать исключение, но я снова создаю узел.
Просто хотел подтвердить, что в приведенном выше сценарии куратор не будет повторять попытку. Кстати, он выдает следующее исключение:
AsyncEventException