diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.java index 5ad0d7eba49..b410719cb4b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.java @@ -185,28 +185,25 @@ public class ZKPermissionWatcher extends ZKListener implements Closeable { public void nodeChildrenChanged(final String path) { waitUntilStarted(); if (path.equals(aclZNode)) { - // preempt any existing nodeChildrenChanged event processing - if (childrenChangedFuture != null && !childrenChangedFuture.isDone()) { - boolean cancelled = childrenChangedFuture.cancel(true); - if (!cancelled) { - // task may have finished between our check and attempted cancel, this is fine. - if (!childrenChangedFuture.isDone()) { - LOG.warn("Could not cancel processing node children changed event, " - + "please file a JIRA and attach logs if possible."); + try { + final List nodeList = + ZKUtil.getChildDataAndWatchForNewChildren(watcher, aclZNode); + // preempt any existing nodeChildrenChanged event processing + if (childrenChangedFuture != null && !childrenChangedFuture.isDone()) { + boolean cancelled = childrenChangedFuture.cancel(true); + if (!cancelled) { + // task may have finished between our check and attempted cancel, this is fine. + if (! childrenChangedFuture.isDone()) { + LOG.warn("Could not cancel processing node children changed event, " + + "please file a JIRA and attach logs if possible."); + } } } + childrenChangedFuture = asyncProcessNodeUpdate(() -> refreshNodes(nodeList)); + } catch (KeeperException ke) { + LOG.error("Error reading data from zookeeper for path "+path, ke); + watcher.abort("ZooKeeper error get node children for path "+path, ke); } - childrenChangedFuture = asyncProcessNodeUpdate(() -> { - try { - final List nodeList = - ZKUtil.getChildDataAndWatchForNewChildren(watcher, aclZNode); - refreshNodes(nodeList); - } catch (KeeperException ke) { - String msg = "ZooKeeper error while reading node children data for path " + path; - LOG.error(msg, ke); - watcher.abort(msg, ke); - } - }); } } diff --git a/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java b/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java index 7aec7a18087..3f0f93f6321 100644 --- a/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java +++ b/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java @@ -742,10 +742,6 @@ public final class ZKUtil { if (nodes != null) { List newNodes = new ArrayList<>(); for (String node : nodes) { - if (Thread.interrupted()) { - // Partial data should not be processed. Cancel processing by sending empty list. - return Collections.emptyList(); - } String nodePath = ZNodePaths.joinZNode(baseNode, node); byte[] data = ZKUtil.getDataAndWatch(zkw, nodePath); newNodes.add(new NodeAndData(nodePath, data));