Repository: hbase Updated Branches: refs/heads/0.94 a228e925e -> 286c16c32
HBASE-11341 ZKProcedureCoordinatorRpcs should respond only to members Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/286c16c3 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/286c16c3 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/286c16c3 Branch: refs/heads/0.94 Commit: 286c16c329fc148036244d092bb7d370a53a3dbf Parents: a228e92 Author: Matteo Bertozzi <[email protected]> Authored: Tue Jun 17 11:43:19 2014 +0100 Committer: Matteo Bertozzi <[email protected]> Committed: Tue Jun 17 11:43:19 2014 +0100 ---------------------------------------------------------------------- .../hadoop/hbase/procedure/ZKProcedureUtil.java | 19 +++++++++++++++++-- .../apache/hadoop/hbase/zookeeper/ZKUtil.java | 2 +- 2 files changed, 18 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/286c16c3/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java b/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java index 56941f2..9839c72 100644 --- a/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java +++ b/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java @@ -186,7 +186,8 @@ public abstract class ZKProcedureUtil * Is this in the procedure barrier acquired znode path */ boolean isAcquiredPathNode(String path) { - return path.startsWith(this.acquiredZnode) && !path.equals(acquiredZnode); + return path.startsWith(this.acquiredZnode) && !path.equals(acquiredZnode) && + isMemberNode(path, acquiredZnode); } /** @@ -200,9 +201,23 @@ public abstract class ZKProcedureUtil * Is this in the procedure barrier reached znode path */ boolean isReachedPathNode(String path) { - return path.startsWith(this.reachedZnode) && !path.equals(reachedZnode); + return path.startsWith(this.reachedZnode) && !path.equals(reachedZnode) && + isMemberNode(path, reachedZnode); } + /* + * Returns true if the specified path is a member of the "statePath" + * /hbase/<ProcName>/<state>/<instance>/member + * |------ state path -----| + * |------------------ path ------------------| + */ + private boolean isMemberNode(final String path, final String statePath) { + int count = 0; + for (int i = statePath.length(); i < path.length(); ++i) { + count += (path.charAt(i) == ZKUtil.ZNODE_PATH_SEPARATOR) ? 1 : 0; + } + return count == 2; + } /** * Is this in the procedure barrier abort znode path http://git-wip-us.apache.org/repos/asf/hbase/blob/286c16c3/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java b/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java index 6247813..9e03bd0 100644 --- a/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java +++ b/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java @@ -82,7 +82,7 @@ public class ZKUtil { private static final Log LOG = LogFactory.getLog(ZKUtil.class); // TODO: Replace this with ZooKeeper constant when ZOOKEEPER-277 is resolved. - private static final char ZNODE_PATH_SEPARATOR = '/'; + public static final char ZNODE_PATH_SEPARATOR = '/'; private static int zkDumpConnectionTimeOut; /**
