Repository: ignite Updated Branches: refs/heads/ignite-2.5 db8865a7b -> d83f1ec0a
IGNITE-8421 new implementation of getChildren method is added tolerating KeeperException.NoNodeException - Fixes #3939. Signed-off-by: dpavlov <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/34c14ed7 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/34c14ed7 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/34c14ed7 Branch: refs/heads/ignite-2.5 Commit: 34c14ed7c924c2155cbfdb412bb9ca9efa942117 Parents: db8865a Author: Sergey Chugunov <[email protected]> Authored: Fri May 4 15:26:02 2018 +0300 Committer: Andrey Gura <[email protected]> Committed: Mon May 7 17:19:02 2018 +0300 ---------------------------------------------------------------------- .../ZkDistributedCollectDataFuture.java | 2 +- .../discovery/zk/internal/ZookeeperClient.java | 25 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/34c14ed7/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkDistributedCollectDataFuture.java ---------------------------------------------------------------------- diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkDistributedCollectDataFuture.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkDistributedCollectDataFuture.java index 174d698..e9b28e1 100644 --- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkDistributedCollectDataFuture.java +++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkDistributedCollectDataFuture.java @@ -150,7 +150,7 @@ class ZkDistributedCollectDataFuture extends GridFutureAdapter<Void> { try { client.deleteAll(evtDir, - client.getChildren(evtDir), + client.getChildrenIfPathExists(evtDir), -1); } catch (KeeperException.NoNodeException e) { http://git-wip-us.apache.org/repos/asf/ignite/blob/34c14ed7/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClient.java ---------------------------------------------------------------------- diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClient.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClient.java index cc525d3..6cc77a5 100644 --- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClient.java +++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClient.java @@ -491,6 +491,31 @@ public class ZookeeperClient implements Watcher { /** * @param path Path. + * @return Children nodes. + * @throws KeeperException.NoNodeException If provided path does not exist. + * @throws ZookeeperClientFailedException If connection to zk was lost. + * @throws InterruptedException If interrupted. + */ + List<String> getChildrenIfPathExists(String path) throws + KeeperException.NoNodeException, InterruptedException, ZookeeperClientFailedException { + for (;;) { + long connStartTime = this.connStartTime; + + try { + return zk.getChildren(path, false); + } + catch (KeeperException.NoNodeException e) { + throw e; + } + catch (Exception e) { + onZookeeperError(connStartTime, e); + } + } + } + + + /** + * @param path Path. * @throws InterruptedException If interrupted. * @throws KeeperException In case of error. * @return {@code True} if given path exists.
