Repository: ignite Updated Branches: refs/heads/master 7e6fc787d -> 02e9ca993
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/02e9ca99 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/02e9ca99 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/02e9ca99 Branch: refs/heads/master Commit: 02e9ca993178d4aa648d06cb93ce1a9277eb22b1 Parents: 7e6fc78 Author: Sergey Chugunov <[email protected]> Authored: Fri May 4 15:26:02 2018 +0300 Committer: dpavlov <[email protected]> Committed: Fri May 4 15:26: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/02e9ca99/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/02e9ca99/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.
