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;
 
   /**

Reply via email to