HBASE-16690 Move znode path configs to a separated class

Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/3aa4dfa7
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/3aa4dfa7
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/3aa4dfa7

Branch: refs/heads/hbase-12439
Commit: 3aa4dfa73d56a1a6a42274e8d65dcbb694a072c7
Parents: 617dfe1
Author: zhangduo <zhang...@apache.org>
Authored: Fri Sep 23 23:30:43 2016 +0800
Committer: zhangduo <zhang...@apache.org>
Committed: Wed Oct 5 20:12:44 2016 +0800

----------------------------------------------------------------------
 .../hbase/client/ConnectionImplementation.java  |   4 +-
 .../apache/hadoop/hbase/client/HBaseAdmin.java  |   2 +-
 .../hadoop/hbase/client/ZooKeeperRegistry.java  |   2 +-
 .../replication/ReplicationStateZKBase.java     |   3 +-
 .../replication/ReplicationTrackerZKImpl.java   |   4 +-
 .../hbase/zookeeper/MasterAddressTracker.java   |  13 +-
 .../hbase/zookeeper/MetaTableLocator.java       |  11 +-
 .../hadoop/hbase/zookeeper/ZKClusterId.java     |   6 +-
 .../apache/hadoop/hbase/zookeeper/ZKUtil.java   |  15 +-
 .../hadoop/hbase/zookeeper/ZNodePaths.java      | 176 +++++++++++++++
 .../hadoop/hbase/zookeeper/ZkAclReset.java      |   4 +-
 .../hbase/zookeeper/ZooKeeperNodeTracker.java   |  10 +-
 .../hbase/zookeeper/ZooKeeperWatcher.java       | 213 +++----------------
 .../hbase/zookeeper/TestZooKeeperWatcher.java   |  42 ++--
 .../hbase/IntegrationTestMetaReplicas.java      |   2 +-
 .../test/IntegrationTestZKAndFSPermissions.java |   2 +-
 .../hbase/rsgroup/RSGroupInfoManagerImpl.java   |   6 +-
 .../rsgroup/VerifyingRSGroupAdminClient.java    |   2 +-
 .../hbase/tmpl/master/MasterStatusTmpl.jamon    |   2 +-
 .../apache/hadoop/hbase/ZKNamespaceManager.java |   2 +-
 .../backup/example/ZKTableArchiveClient.java    |   4 +-
 .../ZKSplitLogManagerCoordination.java          |  41 ++--
 .../ZkSplitLogWorkerCoordination.java           |  26 +--
 .../hbase/master/ActiveMasterManager.java       |  18 +-
 .../org/apache/hadoop/hbase/master/HMaster.java |   8 +-
 .../hbase/master/MasterMetaBootstrap.java       |   9 +-
 .../hadoop/hbase/master/ServerManager.java      |   2 +-
 .../hadoop/hbase/master/TableLockManager.java   |  12 +-
 .../hadoop/hbase/mob/mapreduce/SweepJob.java    |   3 +-
 .../hadoop/hbase/procedure/ZKProcedureUtil.java |   2 +-
 .../hbase/regionserver/HRegionServer.java       |   6 +-
 .../replication/HBaseReplicationEndpoint.java   |   4 +-
 .../security/access/ZKPermissionWatcher.java    |   8 +-
 .../hbase/security/token/ZKSecretWatcher.java   |   2 +-
 .../visibility/ZKVisibilityLabelWatcher.java    |   4 +-
 .../org/apache/hadoop/hbase/util/HBaseFsck.java |   4 +-
 .../hadoop/hbase/util/ZKDataMigrator.java       |   4 +-
 .../hbase/util/hbck/ReplicationChecker.java     |   2 +-
 .../hbase/zookeeper/ClusterStatusTracker.java   |  10 +-
 .../hbase/zookeeper/DrainingServerTracker.java  |   8 +-
 .../hbase/zookeeper/LoadBalancerTracker.java    |   8 +-
 .../zookeeper/MasterMaintenanceModeTracker.java |   4 +-
 .../zookeeper/RecoveringRegionWatcher.java      |   4 +-
 .../zookeeper/RegionNormalizerTracker.java      |   8 +-
 .../hbase/zookeeper/RegionServerTracker.java    |  10 +-
 .../hbase/zookeeper/SplitOrMergeTracker.java    |   8 +-
 .../hadoop/hbase/zookeeper/ZKSplitLog.java      |  14 +-
 .../hbase/client/TestMetaWithReplicas.java      |   4 +-
 .../hbase/master/TestActiveMasterManager.java   |  14 +-
 .../master/TestDistributedLogSplitting.java     |  16 +-
 .../hbase/master/TestHMasterRPCException.java   |   6 +-
 .../hbase/master/TestMasterNoCluster.java       |   2 +-
 .../hbase/master/TestMasterStatusServlet.java   |   2 +
 .../hbase/master/TestMasterWalManager.java      |   9 +-
 .../hbase/master/TestMetaShutdownHandler.java   |   2 +-
 .../hbase/master/TestSplitLogManager.java       |  18 +-
 .../hbase/master/TestTableLockManager.java      |   5 +-
 .../hbase/master/TestTableStateManager.java     |   2 +-
 .../hbase/mob/mapreduce/TestMobSweepMapper.java |   2 +-
 .../mob/mapreduce/TestMobSweepReducer.java      |   2 +-
 .../regionserver/TestMasterAddressTracker.java  |   6 +-
 .../regionserver/TestRegionServerHostname.java  |   2 +-
 .../hbase/regionserver/TestSplitLogWorker.java  |  26 +--
 .../TestReplicationStateHBaseImpl.java          |   2 +-
 .../replication/TestReplicationStateZKImpl.java |   4 +-
 .../TestReplicationTrackerZKImpl.java           |  19 +-
 .../hadoop/hbase/zookeeper/TestZKMulti.java     |  40 ++--
 .../zookeeper/TestZooKeeperNodeTracker.java     |   6 +-
 .../lock/TestZKInterProcessReadWriteLock.java   |   6 +-
 69 files changed, 491 insertions(+), 458 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java
index 391c541..8db9dbf 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java
@@ -459,8 +459,8 @@ class ConnectionImplementation implements 
ClusterConnection, Closeable {
     throws MasterNotRunningException {
     String errorMsg;
     try {
-      if (ZKUtil.checkExists(zkw, zkw.baseZNode) == -1) {
-        errorMsg = "The node " + zkw.baseZNode+" is not in ZooKeeper. "
+      if (ZKUtil.checkExists(zkw, zkw.znodePaths.baseZNode) == -1) {
+        errorMsg = "The node " + zkw.znodePaths.baseZNode+" is not in 
ZooKeeper. "
           + "It should have been written by the master. "
           + "Check the value configured in 'zookeeper.znode.parent'. "
           + "There could be a mismatch with the one configured in the master.";

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
index b442e1b..e7f6929 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
@@ -2128,7 +2128,7 @@ public class HBaseAdmin implements Admin {
          ZooKeeperKeepAliveConnection zkw = ((ConnectionImplementation) 
connection).
              getKeepAliveZooKeeperWatcher();) {
       // This is NASTY. FIX!!!! Dependent on internal implementation! TODO
-      zkw.getRecoverableZooKeeper().getZooKeeper().exists(zkw.baseZNode, 
false);
+      
zkw.getRecoverableZooKeeper().getZooKeeper().exists(zkw.znodePaths.baseZNode, 
false);
       connection.isMasterRunning();
     } catch (IOException e) {
       throw new ZooKeeperConnectionException("Can't connect to ZooKeeper", e);

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ZooKeeperRegistry.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ZooKeeperRegistry.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ZooKeeperRegistry.java
index 83f828c..9fca027 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ZooKeeperRegistry.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ZooKeeperRegistry.java
@@ -121,7 +121,7 @@ class ZooKeeperRegistry implements Registry {
     try {
       // We go to zk rather than to master to get count of regions to avoid
       // HTable having a Master dependency.  See HBase-2828
-      return ZKUtil.getNumberOfChildren(zkw, zkw.rsZNode);
+      return ZKUtil.getNumberOfChildren(zkw, zkw.znodePaths.rsZNode);
     } catch (KeeperException ke) {
       throw new IOException("Unexpected ZooKeeper exception", ke);
     } finally {

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.java
index 8fc7c07..2bfe757 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationStateZKBase.java
@@ -87,7 +87,8 @@ public abstract class ReplicationStateZKBase {
     this.peerStateNodeName = 
conf.get("zookeeper.znode.replication.peers.state", "peer-state");
     this.tableCFsNodeName = 
conf.get("zookeeper.znode.replication.peers.tableCFs", "tableCFs");
     this.ourClusterKey = ZKConfig.getZooKeeperClusterKey(this.conf);
-    this.replicationZNode = ZKUtil.joinZNode(this.zookeeper.baseZNode, 
replicationZNodeName);
+    this.replicationZNode = 
ZKUtil.joinZNode(this.zookeeper.znodePaths.baseZNode,
+      replicationZNodeName);
     this.peersZNode = ZKUtil.joinZNode(replicationZNode, peersZNodeName);
     this.queuesZNode = ZKUtil.joinZNode(replicationZNode, queuesZNodeName);
     this.hfileRefsZNode = ZKUtil.joinZNode(replicationZNode, 
hfileRefsZNodeName);

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.java
index 6e4983e..9d182dc 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.java
@@ -136,7 +136,7 @@ public class ReplicationTrackerZKImpl extends 
ReplicationStateZKBase implements
     }
 
     private boolean refreshListIfRightPath(String path) {
-      if (!path.startsWith(this.watcher.rsZNode)) {
+      if (!path.startsWith(this.watcher.znodePaths.rsZNode)) {
         return false;
       }
       return refreshOtherRegionServersList();
@@ -242,7 +242,7 @@ public class ReplicationTrackerZKImpl extends 
ReplicationStateZKBase implements
   private List<String> getRegisteredRegionServers() {
     List<String> result = null;
     try {
-      result = ZKUtil.listChildrenAndWatchThem(this.zookeeper, 
this.zookeeper.rsZNode);
+      result = ZKUtil.listChildrenAndWatchThem(this.zookeeper, 
this.zookeeper.znodePaths.rsZNode);
     } catch (KeeperException e) {
       this.abortable.abort("Get list of registered region servers", e);
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.java
index 7f580a5..cfa31bb 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.java
@@ -64,7 +64,7 @@ public class MasterAddressTracker extends 
ZooKeeperNodeTracker {
    * @param abortable abortable in case of fatal error
    */
   public MasterAddressTracker(ZooKeeperWatcher watcher, Abortable abortable) {
-    super(watcher, watcher.getMasterAddressZNode(), abortable);
+    super(watcher, watcher.znodePaths.masterAddressZNode, abortable);
   }
 
   /**
@@ -100,7 +100,8 @@ public class MasterAddressTracker extends 
ZooKeeperNodeTracker {
    * @return info port or 0 if timed out or exceptions
    */
   public int getBackupMasterInfoPort(final ServerName sn) {
-    String backupZNode = ZKUtil.joinZNode(watcher.backupMasterAddressesZNode, 
sn.toString());
+    String backupZNode = 
ZKUtil.joinZNode(watcher.znodePaths.backupMasterAddressesZNode,
+      sn.toString());
     try {
       byte[] data = ZKUtil.getData(watcher, backupZNode);
       final ZooKeeperProtos.Master backup = parse(data);
@@ -145,7 +146,7 @@ public class MasterAddressTracker extends 
ZooKeeperNodeTracker {
   throws KeeperException, IOException {
     byte [] data;
     try {
-      data = ZKUtil.getData(zkw, zkw.getMasterAddressZNode());
+      data = ZKUtil.getData(zkw, zkw.znodePaths.masterAddressZNode);
     } catch (InterruptedException e) {
       throw new InterruptedIOException();
     }
@@ -177,7 +178,7 @@ public class MasterAddressTracker extends 
ZooKeeperNodeTracker {
       IOException {
     byte[] data;
     try {
-      data = ZKUtil.getData(zkw, zkw.getMasterAddressZNode());
+      data = ZKUtil.getData(zkw, zkw.znodePaths.masterAddressZNode);
     } catch (InterruptedException e) {
       throw new InterruptedIOException();
     }
@@ -264,10 +265,10 @@ public class MasterAddressTracker extends 
ZooKeeperNodeTracker {
 
     try {
       Stat stat = new Stat();
-      byte[] data = ZKUtil.getDataNoWatch(zkw, zkw.getMasterAddressZNode(), 
stat);
+      byte[] data = ZKUtil.getDataNoWatch(zkw, 
zkw.znodePaths.masterAddressZNode, stat);
       ServerName sn = ProtobufUtil.parseServerNameFrom(data);
       if (sn != null && content.equals(sn.toString())) {
-        return (ZKUtil.deleteNode(zkw, zkw.getMasterAddressZNode(), 
stat.getVersion()));
+        return (ZKUtil.deleteNode(zkw, zkw.znodePaths.masterAddressZNode, 
stat.getVersion()));
       }
     } catch (KeeperException e) {
       LOG.warn("Can't get or delete the master znode", e);

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.java
index 30ed6e2..c18811e 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.java
@@ -204,7 +204,7 @@ public class MetaTableLocator {
   public ServerName waitMetaRegionLocation(ZooKeeperWatcher zkw, int 
replicaId, long timeout)
   throws InterruptedException, NotAllMetaRegionsOnlineException {
     try {
-      if (ZKUtil.checkExists(zkw, zkw.baseZNode) == -1) {
+      if (ZKUtil.checkExists(zkw, zkw.znodePaths.baseZNode) == -1) {
         String errorMsg = "Check the value configured in 
'zookeeper.znode.parent'. "
             + "There could be a mismatch with the one configured in the 
master.";
         LOG.error(errorMsg);
@@ -371,7 +371,6 @@ public class MetaTableLocator {
    * invocation, or may be null.
    * @throws IOException
    */
-  @SuppressWarnings("deprecation")
   private static AdminService.BlockingInterface 
getCachedConnection(ClusterConnection connection,
     ServerName sn)
   throws IOException {
@@ -449,7 +448,7 @@ public class MetaTableLocator {
       .setState(state.convert()).build();
     byte[] data = ProtobufUtil.prependPBMagic(pbrsr.toByteArray());
     try {
-      ZKUtil.setData(zookeeper, zookeeper.getZNodeForReplica(replicaId), data);
+      ZKUtil.setData(zookeeper, 
zookeeper.znodePaths.getZNodeForReplica(replicaId), data);
     } catch(KeeperException.NoNodeException nne) {
       if (replicaId == HRegionInfo.DEFAULT_REPLICA_ID) {
         LOG.debug("META region location doesn't exist, create it");
@@ -457,7 +456,7 @@ public class MetaTableLocator {
         LOG.debug("META region location doesn't exist for replicaId " + 
replicaId +
             ", create it");
       }
-      ZKUtil.createAndWatch(zookeeper, 
zookeeper.getZNodeForReplica(replicaId), data);
+      ZKUtil.createAndWatch(zookeeper, 
zookeeper.znodePaths.getZNodeForReplica(replicaId), data);
     }
   }
 
@@ -480,7 +479,7 @@ public class MetaTableLocator {
     RegionState.State state = RegionState.State.OPEN;
     ServerName serverName = null;
     try {
-      byte[] data = ZKUtil.getData(zkw, zkw.getZNodeForReplica(replicaId));
+      byte[] data = ZKUtil.getData(zkw, 
zkw.znodePaths.getZNodeForReplica(replicaId));
       if (data != null && data.length > 0 && 
ProtobufUtil.isPBMagicPrefix(data)) {
         try {
           int prefixLen = ProtobufUtil.lengthOfPBMagic();
@@ -532,7 +531,7 @@ public class MetaTableLocator {
     }
     try {
       // Just delete the node.  Don't need any watches.
-      ZKUtil.deleteNode(zookeeper, zookeeper.getZNodeForReplica(replicaId));
+      ZKUtil.deleteNode(zookeeper, 
zookeeper.znodePaths.getZNodeForReplica(replicaId));
     } catch(KeeperException.NoNodeException nne) {
       // Has already been deleted
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKClusterId.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKClusterId.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKClusterId.java
index b603ab2..3679602 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKClusterId.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKClusterId.java
@@ -62,10 +62,10 @@ public class ZKClusterId {
 
   public static String readClusterIdZNode(ZooKeeperWatcher watcher)
   throws KeeperException {
-    if (ZKUtil.checkExists(watcher, watcher.clusterIdZNode) != -1) {
+    if (ZKUtil.checkExists(watcher, watcher.znodePaths.clusterIdZNode) != -1) {
       byte [] data;
       try {
-        data = ZKUtil.getData(watcher, watcher.clusterIdZNode);
+        data = ZKUtil.getData(watcher, watcher.znodePaths.clusterIdZNode);
       } catch (InterruptedException e) {
         Thread.currentThread().interrupt();
         return null;
@@ -83,7 +83,7 @@ public class ZKClusterId {
 
   public static void setClusterId(ZooKeeperWatcher watcher, ClusterId id)
       throws KeeperException {
-    ZKUtil.createSetData(watcher, watcher.clusterIdZNode, id.toByteArray());
+    ZKUtil.createSetData(watcher, watcher.znodePaths.clusterIdZNode, 
id.toByteArray());
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java
index cf11641..2f6e1cf 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java
@@ -901,7 +901,7 @@ public class ZKUtil {
 
   public static ArrayList<ACL> createACL(ZooKeeperWatcher zkw, String node,
     boolean isSecureZooKeeper) {
-    if (!node.startsWith(zkw.baseZNode)) {
+    if (!node.startsWith(zkw.znodePaths.baseZNode)) {
       return Ids.OPEN_ACL_UNSAFE;
     }
     if (isSecureZooKeeper) {
@@ -1701,7 +1701,7 @@ public class ZKUtil {
   public static String dump(ZooKeeperWatcher zkw) {
     StringBuilder sb = new StringBuilder();
     try {
-      sb.append("HBase is rooted at ").append(zkw.baseZNode);
+      sb.append("HBase is rooted at ").append(zkw.znodePaths.baseZNode);
       sb.append("\nActive master address: ");
       try {
         sb.append(MasterAddressTracker.getMasterAddress(zkw));
@@ -1709,8 +1709,7 @@ public class ZKUtil {
         sb.append("<<FAILED LOOKUP: " + e.getMessage() + ">>");
       }
       sb.append("\nBackup master addresses:");
-      for (String child : listChildrenNoWatch(zkw,
-                                              zkw.backupMasterAddressesZNode)) 
{
+      for (String child : listChildrenNoWatch(zkw, 
zkw.znodePaths.backupMasterAddressesZNode)) {
         sb.append("\n ").append(child);
       }
       sb.append("\nRegion server holding hbase:meta: "
@@ -1723,7 +1722,7 @@ public class ZKUtil {
                     + new MetaTableLocator().getMetaRegionLocation(zkw, i));
       }
       sb.append("\nRegion servers:");
-      for (String child : listChildrenNoWatch(zkw, zkw.rsZNode)) {
+      for (String child : listChildrenNoWatch(zkw, zkw.znodePaths.rsZNode)) {
         sb.append("\n ").append(child);
       }
       try {
@@ -1767,7 +1766,7 @@ public class ZKUtil {
       throws KeeperException {
     String replicationZNodeName = 
zkw.getConfiguration().get("zookeeper.znode.replication",
       "replication");
-    String replicationZnode = joinZNode(zkw.baseZNode, replicationZNodeName);
+    String replicationZnode = joinZNode(zkw.znodePaths.baseZNode, 
replicationZNodeName);
     if (ZKUtil.checkExists(zkw, replicationZnode) == -1) return;
     // do a ls -r on this znode
     sb.append("\n").append(replicationZnode).append(": ");
@@ -1948,9 +1947,9 @@ public class ZKUtil {
       " byte(s) of data from znode " + znode +
       (watcherSet? " and set watcher; ": "; data=") +
       (data == null? "null": data.length == 0? "empty": (
-          znode.startsWith(ZooKeeperWatcher.META_ZNODE_PREFIX)?
+          znode.startsWith(zkw.znodePaths.metaZNodePrefix)?
             getServerNameOrEmptyString(data):
-          znode.startsWith(zkw.backupMasterAddressesZNode)?
+          znode.startsWith(zkw.znodePaths.backupMasterAddressesZNode)?
             getServerNameOrEmptyString(data):
           StringUtils.abbreviate(Bytes.toStringBinary(data), 32)))));
   }

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZNodePaths.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZNodePaths.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZNodePaths.java
new file mode 100644
index 0000000..acf1afc
--- /dev/null
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZNodePaths.java
@@ -0,0 +1,176 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.zookeeper;
+
+import static org.apache.hadoop.hbase.HConstants.DEFAULT_META_REPLICA_NUM;
+import static 
org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT;
+import static org.apache.hadoop.hbase.HConstants.META_REPLICAS_NUM;
+import static org.apache.hadoop.hbase.HConstants.SPLIT_LOGDIR_NAME;
+import static org.apache.hadoop.hbase.HConstants.ZOOKEEPER_ZNODE_PARENT;
+import static org.apache.hadoop.hbase.HRegionInfo.DEFAULT_REPLICA_ID;
+
+import com.google.common.collect.ImmutableMap;
+
+import java.util.Optional;
+import java.util.stream.IntStream;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.classification.InterfaceAudience;
+
+/**
+ * Class that hold all the paths of znode for HBase.
+ */
+@InterfaceAudience.Private
+public class ZNodePaths {
+
+  public final static String META_ZNODE_PREFIX = "meta-region-server";
+
+  // base znode for this cluster
+  public final String baseZNode;
+  // the prefix of meta znode, does not include baseZNode.
+  public final String metaZNodePrefix;
+  // znodes containing the locations of the servers hosting the meta replicas
+  public final ImmutableMap<Integer, String> metaReplicaZNodes;
+  // znode containing ephemeral nodes of the regionservers
+  public final String rsZNode;
+  // znode containing ephemeral nodes of the draining regionservers
+  public final String drainingZNode;
+  // znode of currently active master
+  public final String masterAddressZNode;
+  // znode of this master in backup master directory, if not the active master
+  public final String backupMasterAddressesZNode;
+  // znode containing the current cluster state
+  public final String clusterStateZNode;
+  // znode used for table disabling/enabling
+  @Deprecated
+  public final String tableZNode;
+  // znode containing the unique cluster ID
+  public final String clusterIdZNode;
+  // znode used for log splitting work assignment
+  public final String splitLogZNode;
+  // znode containing the state of the load balancer
+  public final String balancerZNode;
+  // znode containing the state of region normalizer
+  public final String regionNormalizerZNode;
+  // znode containing the state of all switches, currently there are split and 
merge child node.
+  public final String switchZNode;
+  // znode containing the lock for the tables
+  public final String tableLockZNode;
+  // znode containing the state of recovering regions
+  public final String recoveringRegionsZNode;
+  // znode containing namespace descriptors
+  public final String namespaceZNode;
+  // znode of indicating master maintenance mode
+  public final String masterMaintZNode;
+
+  public ZNodePaths(Configuration conf) {
+    baseZNode = conf.get(ZOOKEEPER_ZNODE_PARENT, 
DEFAULT_ZOOKEEPER_ZNODE_PARENT);
+    ImmutableMap.Builder<Integer, String> builder = ImmutableMap.builder();
+    metaZNodePrefix = conf.get("zookeeper.znode.metaserver", 
META_ZNODE_PREFIX);
+    String defaultMetaReplicaZNode = ZKUtil.joinZNode(baseZNode, 
metaZNodePrefix);
+    builder.put(DEFAULT_REPLICA_ID, defaultMetaReplicaZNode);
+    int numMetaReplicas = conf.getInt(META_REPLICAS_NUM, 
DEFAULT_META_REPLICA_NUM);
+    IntStream.range(1, numMetaReplicas)
+        .forEachOrdered(i -> builder.put(i, defaultMetaReplicaZNode + "-" + 
i));
+    metaReplicaZNodes = builder.build();
+    rsZNode = ZKUtil.joinZNode(baseZNode, conf.get("zookeeper.znode.rs", 
"rs"));
+    drainingZNode = ZKUtil.joinZNode(baseZNode,
+      conf.get("zookeeper.znode.draining.rs", "draining"));
+    masterAddressZNode = ZKUtil.joinZNode(baseZNode, 
conf.get("zookeeper.znode.master", "master"));
+    backupMasterAddressesZNode = ZKUtil.joinZNode(baseZNode,
+      conf.get("zookeeper.znode.backup.masters", "backup-masters"));
+    clusterStateZNode = ZKUtil.joinZNode(baseZNode, 
conf.get("zookeeper.znode.state", "running"));
+    tableZNode = ZKUtil.joinZNode(baseZNode,
+      conf.get("zookeeper.znode.tableEnableDisable", "table"));
+    clusterIdZNode = ZKUtil.joinZNode(baseZNode, 
conf.get("zookeeper.znode.clusterId", "hbaseid"));
+    splitLogZNode = ZKUtil.joinZNode(baseZNode,
+      conf.get("zookeeper.znode.splitlog", SPLIT_LOGDIR_NAME));
+    balancerZNode = ZKUtil.joinZNode(baseZNode, 
conf.get("zookeeper.znode.balancer", "balancer"));
+    regionNormalizerZNode = ZKUtil.joinZNode(baseZNode,
+      conf.get("zookeeper.znode.regionNormalizer", "normalizer"));
+    switchZNode = ZKUtil.joinZNode(baseZNode, 
conf.get("zookeeper.znode.switch", "switch"));
+    tableLockZNode = ZKUtil.joinZNode(baseZNode,
+      conf.get("zookeeper.znode.tableLock", "table-lock"));
+    recoveringRegionsZNode = ZKUtil.joinZNode(baseZNode,
+      conf.get("zookeeper.znode.recovering.regions", "recovering-regions"));
+    namespaceZNode = ZKUtil.joinZNode(baseZNode,
+      conf.get("zookeeper.znode.namespace", "namespace"));
+    masterMaintZNode = ZKUtil.joinZNode(baseZNode,
+      conf.get("zookeeper.znode.masterMaintenance", "master-maintenance"));
+  }
+
+  @Override
+  public String toString() {
+    return "ZNodePaths [baseZNode=" + baseZNode + ", metaReplicaZNodes=" + 
metaReplicaZNodes
+        + ", rsZNode=" + rsZNode + ", drainingZNode=" + drainingZNode + ", 
masterAddressZNode="
+        + masterAddressZNode + ", backupMasterAddressesZNode=" + 
backupMasterAddressesZNode
+        + ", clusterStateZNode=" + clusterStateZNode + ", tableZNode=" + 
tableZNode
+        + ", clusterIdZNode=" + clusterIdZNode + ", splitLogZNode=" + 
splitLogZNode
+        + ", balancerZNode=" + balancerZNode + ", regionNormalizerZNode=" + 
regionNormalizerZNode
+        + ", switchZNode=" + switchZNode + ", tableLockZNode=" + tableLockZNode
+        + ", recoveringRegionsZNode=" + recoveringRegionsZNode + ", 
namespaceZNode="
+        + namespaceZNode + ", masterMaintZNode=" + masterMaintZNode + "]";
+  }
+
+  /**
+   * Is the znode of any meta replica
+   * @param node
+   * @return true or false
+   */
+  public boolean isAnyMetaReplicaZNode(String node) {
+    if (metaReplicaZNodes.containsValue(node)) {
+      return true;
+    }
+    return false;
+  }
+
+  /**
+   * Get the znode string corresponding to a replicaId
+   * @param replicaId
+   * @return znode
+   */
+  public String getZNodeForReplica(int replicaId) {
+    // return a newly created path but don't update the cache of paths
+    // This is mostly needed for tests that attempt to create meta replicas
+    // from outside the master
+    return Optional.ofNullable(metaReplicaZNodes.get(replicaId))
+        .orElseGet(() -> metaReplicaZNodes.get(DEFAULT_REPLICA_ID) + "-" + 
replicaId);
+  }
+
+  /**
+   * Parse the meta replicaId from the passed znode
+   * @param znode
+   * @return replicaId
+   */
+  public int getMetaReplicaIdFromZnode(String znode) {
+    if (znode.equals(metaZNodePrefix)) {
+      return HRegionInfo.DEFAULT_REPLICA_ID;
+    }
+    return Integer.parseInt(znode.substring(metaZNodePrefix.length() + 1));
+  }
+
+  /**
+   * Is it the default meta replica's znode
+   * @param znode
+   * @return true or false
+   */
+  public boolean isDefaultMetaReplicaZnode(String znode) {
+    return metaReplicaZNodes.get(DEFAULT_REPLICA_ID).equals(znode);
+  }
+}

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZkAclReset.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZkAclReset.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZkAclReset.java
index 9bb6bf7..fcc8b0c 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZkAclReset.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZkAclReset.java
@@ -70,8 +70,8 @@ public class ZkAclReset extends Configured implements Tool {
     ZooKeeperWatcher zkw = new ZooKeeperWatcher(conf, "ZkAclReset", null);
     try {
       LOG.info((eraseAcls ? "Erase" : "Set") + " HBase ACLs for " +
-                zkw.getQuorum() + " " + zkw.getBaseZNode());
-      resetAcls(zkw, zkw.getBaseZNode(), eraseAcls);
+                zkw.getQuorum() + " " + zkw.znodePaths.baseZNode);
+      resetAcls(zkw, zkw.znodePaths.baseZNode, eraseAcls);
     } finally {
       zkw.close();
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperNodeTracker.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperNodeTracker.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperNodeTracker.java
index 262432e..a0b58cb 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperNodeTracker.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperNodeTracker.java
@@ -232,15 +232,13 @@ public abstract class ZooKeeperNodeTracker extends 
ZooKeeperListener {
    */
   public boolean checkIfBaseNodeAvailable() {
     try {
-      if (ZKUtil.checkExists(watcher, watcher.baseZNode) == -1) {
+      if (ZKUtil.checkExists(watcher, watcher.znodePaths.baseZNode) == -1) {
         return false;
       }
     } catch (KeeperException e) {
-      abortable
-          .abort(
-              "Exception while checking if basenode ("+watcher.baseZNode+
-                ") exists in ZooKeeper.",
-              e);
+      abortable.abort("Exception while checking if basenode (" + 
watcher.znodePaths.baseZNode
+          + ") exists in ZooKeeper.",
+        e);
     }
     return true;
   }

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
index 1f3afe4..c8462fb 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java
@@ -80,6 +80,8 @@ public class ZooKeeperWatcher implements Watcher, Abortable, 
Closeable {
   // Used if abortable is null
   private boolean aborted = false;
 
+  public final ZNodePaths znodePaths;
+
   // listeners to be notified
   private final List<ZooKeeperListener> listeners =
     new CopyOnWriteArrayList<ZooKeeperListener>();
@@ -88,45 +90,7 @@ public class ZooKeeperWatcher implements Watcher, Abortable, 
Closeable {
   // negotiation to complete
   public CountDownLatch saslLatch = new CountDownLatch(1);
 
-  // node names
-
-  // base znode for this cluster
-  public String baseZNode;
-  //znodes containing the locations of the servers hosting the meta replicas
-  private Map<Integer,String> metaReplicaZnodes = new HashMap<Integer, 
String>();
-  // znode containing ephemeral nodes of the regionservers
-  public String rsZNode;
-  // znode containing ephemeral nodes of the draining regionservers
-  public String drainingZNode;
-  // znode of currently active master
-  private String masterAddressZNode;
-  // znode of this master in backup master directory, if not the active master
-  public String backupMasterAddressesZNode;
-  // znode containing the current cluster state
-  public String clusterStateZNode;
-  // znode used for table disabling/enabling
-  @Deprecated
-  public String tableZNode;
-  // znode containing the unique cluster ID
-  public String clusterIdZNode;
-  // znode used for log splitting work assignment
-  public String splitLogZNode;
-  // znode containing the state of the load balancer
-  public String balancerZNode;
-  // znode containing the state of region normalizer
-  private String regionNormalizerZNode;
-  // znode containing the state of all switches, currently there are split and 
merge child node.
-  private String switchZNode;
-  // znode containing the lock for the tables
-  public String tableLockZNode;
-  // znode containing the state of recovering regions
-  public String recoveringRegionsZNode;
-  // znode containing namespace descriptors
-  public String namespaceZNode = "namespace";
-  // znode of indicating master maintenance mode
-  public static String masterMaintZNode = "masterMaintenance";
-
-  public final static String META_ZNODE_PREFIX = "meta-region-server";
+
 
   private final Configuration conf;
 
@@ -166,7 +130,7 @@ public class ZooKeeperWatcher implements Watcher, 
Abortable, Closeable {
     // handle the syncconnect event.
     this.identifier = identifier + "0x0";
     this.abortable = abortable;
-    setNodeNames(conf);
+    this.znodePaths = new ZNodePaths(conf);
     PendingWatcher pendingWatcher = new PendingWatcher();
     this.recoverableZooKeeper = ZKUtil.connect(conf, quorum, pendingWatcher, 
identifier);
     pendingWatcher.prepare(this);
@@ -188,15 +152,15 @@ public class ZooKeeperWatcher implements Watcher, 
Abortable, Closeable {
   private void createBaseZNodes() throws ZooKeeperConnectionException {
     try {
       // Create all the necessary "directories" of znodes
-      ZKUtil.createWithParents(this, baseZNode);
-      ZKUtil.createAndFailSilent(this, rsZNode);
-      ZKUtil.createAndFailSilent(this, drainingZNode);
-      ZKUtil.createAndFailSilent(this, tableZNode);
-      ZKUtil.createAndFailSilent(this, splitLogZNode);
-      ZKUtil.createAndFailSilent(this, backupMasterAddressesZNode);
-      ZKUtil.createAndFailSilent(this, tableLockZNode);
-      ZKUtil.createAndFailSilent(this, recoveringRegionsZNode);
-      ZKUtil.createAndFailSilent(this, masterMaintZNode);
+      ZKUtil.createWithParents(this, znodePaths.baseZNode);
+      ZKUtil.createAndFailSilent(this, znodePaths.rsZNode);
+      ZKUtil.createAndFailSilent(this, znodePaths.drainingZNode);
+      ZKUtil.createAndFailSilent(this, znodePaths.tableZNode);
+      ZKUtil.createAndFailSilent(this, znodePaths.splitLogZNode);
+      ZKUtil.createAndFailSilent(this, znodePaths.backupMasterAddressesZNode);
+      ZKUtil.createAndFailSilent(this, znodePaths.tableLockZNode);
+      ZKUtil.createAndFailSilent(this, znodePaths.recoveringRegionsZNode);
+      ZKUtil.createAndFailSilent(this, znodePaths.masterMaintZNode);
     } catch (KeeperException e) {
       throw new ZooKeeperConnectionException(
           prefix("Unexpected KeeperException creating base node"), e);
@@ -210,14 +174,14 @@ public class ZooKeeperWatcher implements Watcher, 
Abortable, Closeable {
     // all clients need to access this data to work. Using zk for sharing data 
to clients (other
     // than service lookup case is not a recommended design pattern.
     return
-        node.equals(baseZNode) ||
-        isAnyMetaReplicaZnode(node) ||
-        node.equals(getMasterAddressZNode()) ||
-        node.equals(clusterIdZNode)||
-        node.equals(rsZNode) ||
+        node.equals(znodePaths.baseZNode) ||
+        znodePaths.isAnyMetaReplicaZNode(node) ||
+        node.equals(znodePaths.masterAddressZNode) ||
+        node.equals(znodePaths.clusterIdZNode)||
+        node.equals(znodePaths.rsZNode) ||
         // /hbase/table and /hbase/table/foo is allowed, /hbase/table-lock is 
not
-        node.equals(tableZNode) ||
-        node.startsWith(tableZNode + "/");
+        node.equals(znodePaths.tableZNode) ||
+        node.startsWith(znodePaths.tableZNode + "/");
   }
 
   /**
@@ -235,11 +199,11 @@ public class ZooKeeperWatcher implements Watcher, 
Abortable, Closeable {
     // Check the base znodes permission first. Only do the recursion if base 
znode's perms are not
     // correct.
     try {
-      List<ACL> actualAcls = recoverableZooKeeper.getAcl(baseZNode, new 
Stat());
+      List<ACL> actualAcls = recoverableZooKeeper.getAcl(znodePaths.baseZNode, 
new Stat());
 
       if (!isBaseZnodeAclSetup(actualAcls)) {
         LOG.info("setting znode ACLs");
-        setZnodeAclsRecursive(baseZNode);
+        setZnodeAclsRecursive(znodePaths.baseZNode);
       }
     } catch(KeeperException.NoNodeException nne) {
       return;
@@ -390,7 +354,7 @@ public class ZooKeeperWatcher implements Watcher, 
Abortable, Closeable {
 
   @Override
   public String toString() {
-    return this.identifier + ", quorum=" + quorum + ", baseZNode=" + baseZNode;
+    return this.identifier + ", quorum=" + quorum + ", baseZNode=" + 
znodePaths.baseZNode;
   }
 
   /**
@@ -404,82 +368,12 @@ public class ZooKeeperWatcher implements Watcher, 
Abortable, Closeable {
   }
 
   /**
-   * Set the local variable node names using the specified configuration.
-   */
-  private void setNodeNames(Configuration conf) {
-    baseZNode = conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT,
-        HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);
-    metaReplicaZnodes.put(0, ZKUtil.joinZNode(baseZNode,
-           conf.get("zookeeper.znode.metaserver", "meta-region-server")));
-    int numMetaReplicas = conf.getInt(HConstants.META_REPLICAS_NUM,
-            HConstants.DEFAULT_META_REPLICA_NUM);
-    for (int i = 1; i < numMetaReplicas; i++) {
-      String str = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.metaserver", "meta-region-server") + "-" + 
i);
-      metaReplicaZnodes.put(i, str);
-    }
-    rsZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.rs", "rs"));
-    drainingZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.draining.rs", "draining"));
-    masterAddressZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.master", "master"));
-    backupMasterAddressesZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.backup.masters", "backup-masters"));
-    clusterStateZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.state", "running"));
-    tableZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.tableEnableDisable", "table"));
-    clusterIdZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.clusterId", "hbaseid"));
-    splitLogZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.splitlog", HConstants.SPLIT_LOGDIR_NAME));
-    balancerZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.balancer", "balancer"));
-    regionNormalizerZNode = ZKUtil.joinZNode(baseZNode,
-      conf.get("zookeeper.znode.regionNormalizer", "normalizer"));
-    switchZNode = ZKUtil.joinZNode(baseZNode, 
conf.get("zookeeper.znode.switch", "switch"));
-    tableLockZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.tableLock", "table-lock"));
-    recoveringRegionsZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.recovering.regions", "recovering-regions"));
-    namespaceZNode = ZKUtil.joinZNode(baseZNode,
-        conf.get("zookeeper.znode.namespace", "namespace"));
-    masterMaintZNode = ZKUtil.joinZNode(baseZNode,
-      conf.get("zookeeper.znode.masterMaintenance", "master-maintenance"));
-  }
-
-  /**
-   * Is the znode of any meta replica
-   * @param node
-   * @return true or false
-   */
-  public boolean isAnyMetaReplicaZnode(String node) {
-    if (metaReplicaZnodes.values().contains(node)) {
-      return true;
-    }
-    return false;
-  }
-
-  /**
-   * Is it the default meta replica's znode
-   * @param node
-   * @return true or false
-   */
-  public boolean isDefaultMetaReplicaZnode(String node) {
-    if (getZNodeForReplica(HRegionInfo.DEFAULT_REPLICA_ID).equals(node)) {
-      return true;
-    }
-    return false;
-  }
-
-  /**
    * Get the znodes corresponding to the meta replicas from ZK
    * @return list of znodes
    * @throws KeeperException
    */
   public List<String> getMetaReplicaNodes() throws KeeperException {
-    List<String> childrenOfBaseNode = ZKUtil.listChildrenNoWatch(this, 
baseZNode);
+    List<String> childrenOfBaseNode = ZKUtil.listChildrenNoWatch(this, 
znodePaths.baseZNode);
     List<String> metaReplicaNodes = new ArrayList<String>(2);
     if (childrenOfBaseNode != null) {
       String pattern = 
conf.get("zookeeper.znode.metaserver","meta-region-server");
@@ -491,36 +385,6 @@ public class ZooKeeperWatcher implements Watcher, 
Abortable, Closeable {
   }
 
   /**
-   * Get the znode string corresponding to a replicaId
-   * @param replicaId
-   * @return znode
-   */
-  public String getZNodeForReplica(int replicaId) {
-    String str = metaReplicaZnodes.get(replicaId);
-    // return a newly created path but don't update the cache of paths
-    // This is mostly needed for tests that attempt to create meta replicas
-    // from outside the master
-    if (str == null) {
-      str = ZKUtil.joinZNode(baseZNode,
-          conf.get("zookeeper.znode.metaserver", "meta-region-server") + "-" + 
replicaId);
-    }
-    return str;
-  }
-
-  /**
-   * Parse the meta replicaId from the passed znode
-   * @param znode
-   * @return replicaId
-   */
-  public int getMetaReplicaIdFromZnode(String znode) {
-    String pattern = 
conf.get("zookeeper.znode.metaserver","meta-region-server");
-    if (znode.equals(pattern)) return HRegionInfo.DEFAULT_REPLICA_ID;
-    // the non-default replicas are of the pattern 
meta-region-server-<replicaId>
-    String nonDefaultPattern = pattern + "-";
-    return Integer.parseInt(znode.substring(nonDefaultPattern.length()));
-  }
-
-  /**
    * Register the specified listener to receive ZooKeeper events.
    * @param listener
    */
@@ -583,10 +447,12 @@ public class ZooKeeperWatcher implements Watcher, 
Abortable, Closeable {
   }
 
   /**
-   * @return the base znode of this zookeeper connection instance.
+   * Get the znodePaths.
+   * <p>
+   * Mainly used for mocking as mockito can not mock a field access.
    */
-  public String getBaseZNode() {
-    return baseZNode;
+  public ZNodePaths getZNodePaths() {
+    return znodePaths;
   }
 
   /**
@@ -765,25 +631,4 @@ public class ZooKeeperWatcher implements Watcher, 
Abortable, Closeable {
   public boolean isAborted() {
     return this.abortable == null? this.aborted: this.abortable.isAborted();
   }
-
-  /**
-   * @return Path to the currently active master.
-   */
-  public String getMasterAddressZNode() {
-    return this.masterAddressZNode;
-  }
-
-  /**
-   * @return ZooKeeper znode for region normalizer state
-   */
-  public String getRegionNormalizerZNode() {
-    return regionNormalizerZNode;
-  }
-
-  /**
-   *  @return ZK node for switch
-   * */
-  public String getSwitchZNode() {
-    return switchZNode;
-  }
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-client/src/test/java/org/apache/hadoop/hbase/zookeeper/TestZooKeeperWatcher.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/test/java/org/apache/hadoop/hbase/zookeeper/TestZooKeeperWatcher.java
 
b/hbase-client/src/test/java/org/apache/hadoop/hbase/zookeeper/TestZooKeeperWatcher.java
index 10a3816..de2ec2a 100644
--- 
a/hbase-client/src/test/java/org/apache/hadoop/hbase/zookeeper/TestZooKeeperWatcher.java
+++ 
b/hbase-client/src/test/java/org/apache/hadoop/hbase/zookeeper/TestZooKeeperWatcher.java
@@ -18,7 +18,8 @@
 
 package org.apache.hadoop.hbase.zookeeper;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
 
@@ -28,31 +29,30 @@ import 
org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-@Category({SmallTests.class})
+@Category({ SmallTests.class })
 public class TestZooKeeperWatcher {
 
   @Test
   public void testIsClientReadable() throws ZooKeeperConnectionException, 
IOException {
     ZooKeeperWatcher watcher = new 
ZooKeeperWatcher(HBaseConfiguration.create(),
-      "testIsClientReadable", null, false);
-
-    assertTrue(watcher.isClientReadable(watcher.baseZNode));
-    assertTrue(watcher.isClientReadable(watcher.getZNodeForReplica(0)));
-    assertTrue(watcher.isClientReadable(watcher.getMasterAddressZNode()));
-    assertTrue(watcher.isClientReadable(watcher.clusterIdZNode));
-    assertTrue(watcher.isClientReadable(watcher.tableZNode));
-    assertTrue(watcher.isClientReadable(ZKUtil.joinZNode(watcher.tableZNode, 
"foo")));
-    assertTrue(watcher.isClientReadable(watcher.rsZNode));
-
-
-    assertFalse(watcher.isClientReadable(watcher.tableLockZNode));
-    assertFalse(watcher.isClientReadable(watcher.balancerZNode));
-    assertFalse(watcher.isClientReadable(watcher.getRegionNormalizerZNode()));
-    assertFalse(watcher.isClientReadable(watcher.clusterStateZNode));
-    assertFalse(watcher.isClientReadable(watcher.drainingZNode));
-    assertFalse(watcher.isClientReadable(watcher.recoveringRegionsZNode));
-    assertFalse(watcher.isClientReadable(watcher.splitLogZNode));
-    assertFalse(watcher.isClientReadable(watcher.backupMasterAddressesZNode));
+        "testIsClientReadable", null, false);
+
+    assertTrue(watcher.isClientReadable(watcher.znodePaths.baseZNode));
+    
assertTrue(watcher.isClientReadable(watcher.znodePaths.getZNodeForReplica(0)));
+    
assertTrue(watcher.isClientReadable(watcher.znodePaths.masterAddressZNode));
+    assertTrue(watcher.isClientReadable(watcher.znodePaths.clusterIdZNode));
+    assertTrue(watcher.isClientReadable(watcher.znodePaths.tableZNode));
+    
assertTrue(watcher.isClientReadable(ZKUtil.joinZNode(watcher.znodePaths.tableZNode,
 "foo")));
+    assertTrue(watcher.isClientReadable(watcher.znodePaths.rsZNode));
+
+    assertFalse(watcher.isClientReadable(watcher.znodePaths.tableLockZNode));
+    assertFalse(watcher.isClientReadable(watcher.znodePaths.balancerZNode));
+    
assertFalse(watcher.isClientReadable(watcher.znodePaths.regionNormalizerZNode));
+    
assertFalse(watcher.isClientReadable(watcher.znodePaths.clusterStateZNode));
+    assertFalse(watcher.isClientReadable(watcher.znodePaths.drainingZNode));
+    
assertFalse(watcher.isClientReadable(watcher.znodePaths.recoveringRegionsZNode));
+    assertFalse(watcher.isClientReadable(watcher.znodePaths.splitLogZNode));
+    
assertFalse(watcher.isClientReadable(watcher.znodePaths.backupMasterAddressesZNode));
 
     watcher.close();
   }

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestMetaReplicas.java
----------------------------------------------------------------------
diff --git 
a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestMetaReplicas.java
 
b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestMetaReplicas.java
index b53d5d0..667daa8 100644
--- 
a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestMetaReplicas.java
+++ 
b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestMetaReplicas.java
@@ -80,7 +80,7 @@ public class IntegrationTestMetaReplicas {
   }
 
   private static void waitUntilZnodeAvailable(int replicaId) throws Exception {
-    String znode = util.getZooKeeperWatcher().getZNodeForReplica(replicaId);
+    String znode = 
util.getZooKeeperWatcher().znodePaths.getZNodeForReplica(replicaId);
     int i = 0;
     while (i < 1000) {
       if (ZKUtil.checkExists(util.getZooKeeperWatcher(), znode) == -1) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestZKAndFSPermissions.java
----------------------------------------------------------------------
diff --git 
a/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestZKAndFSPermissions.java
 
b/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestZKAndFSPermissions.java
index 018b406..9d30b7c 100644
--- 
a/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestZKAndFSPermissions.java
+++ 
b/hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestZKAndFSPermissions.java
@@ -140,7 +140,7 @@ public class IntegrationTestZKAndFSPermissions extends 
AbstractHBaseTool {
     ZooKeeperWatcher watcher = new ZooKeeperWatcher(conf, 
"IntegrationTestZnodeACLs", null);
     RecoverableZooKeeper zk = ZKUtil.connect(this.conf, watcher);
 
-    String baseZNode = watcher.baseZNode;
+    String baseZNode = watcher.znodePaths.baseZNode;
 
     LOG.info("");
     
LOG.info("***********************************************************************************");

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java
 
b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java
index 4651998..47d0c0e 100644
--- 
a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java
+++ 
b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java
@@ -297,7 +297,7 @@ public class RSGroupInfoManagerImpl implements 
RSGroupInfoManager, ServerListene
       groupList.addAll(rsGroupSerDe.retrieveGroupList(rsGroupTable));
     } else {
       LOG.debug("Refershing in Offline mode.");
-      String groupBasePath = ZKUtil.joinZNode(watcher.baseZNode, rsGroupZNode);
+      String groupBasePath = ZKUtil.joinZNode(watcher.znodePaths.baseZNode, 
rsGroupZNode);
       groupList.addAll(rsGroupSerDe.retrieveGroupList(watcher, groupBasePath));
     }
 
@@ -411,7 +411,7 @@ public class RSGroupInfoManagerImpl implements 
RSGroupInfoManager, ServerListene
 
 
     try {
-      String groupBasePath = ZKUtil.joinZNode(watcher.baseZNode, rsGroupZNode);
+      String groupBasePath = ZKUtil.joinZNode(watcher.znodePaths.baseZNode, 
rsGroupZNode);
       ZKUtil.createAndFailSilent(watcher, groupBasePath, 
ProtobufMagic.PB_MAGIC);
 
       List<ZKUtil.ZKUtilOp> zkOps = new 
ArrayList<ZKUtil.ZKUtilOp>(newGroupMap.size());
@@ -452,7 +452,7 @@ public class RSGroupInfoManagerImpl implements 
RSGroupInfoManager, ServerListene
     try {
       LOG.debug("Reading online RS from zookeeper");
       List<ServerName> servers = new LinkedList<ServerName>();
-      for (String el: ZKUtil.listChildrenNoWatch(watcher, watcher.rsZNode)) {
+      for (String el: ZKUtil.listChildrenNoWatch(watcher, 
watcher.znodePaths.rsZNode)) {
         servers.add(ServerName.parseServerName(el));
       }
       return servers;

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/VerifyingRSGroupAdminClient.java
----------------------------------------------------------------------
diff --git 
a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/VerifyingRSGroupAdminClient.java
 
b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/VerifyingRSGroupAdminClient.java
index 0395c9c..441cc39 100644
--- 
a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/VerifyingRSGroupAdminClient.java
+++ 
b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/VerifyingRSGroupAdminClient.java
@@ -122,7 +122,7 @@ public class VerifyingRSGroupAdminClient extends 
RSGroupAdmin {
     Assert.assertEquals(Sets.newHashSet(groupMap.values()),
         Sets.newHashSet(wrapped.listRSGroups()));
     try {
-      String groupBasePath = ZKUtil.joinZNode(zkw.baseZNode, "rsgroup");
+      String groupBasePath = ZKUtil.joinZNode(zkw.znodePaths.baseZNode, 
"rsgroup");
       for(String znode: ZKUtil.listChildrenNoWatch(zkw, groupBasePath)) {
         byte[] data = ZKUtil.getData(zkw, ZKUtil.joinZNode(groupBasePath, 
znode));
         if(data.length > 0) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
 
b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
index d19df21..e967083 100644
--- 
a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
+++ 
b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
@@ -295,7 +295,7 @@ AssignmentManager assignmentManager = 
master.getAssignmentManager();
                 </tr>
                 <tr>
                     <td>ZooKeeper Base Path</td>
-                    <td> <% master.getZooKeeper().getBaseZNode() %></td>
+                    <td> <% master.getZooKeeper().getZNodePaths().baseZNode 
%></td>
                     <td>Root node of this cluster in ZK.</td>
                 </tr>
                 <tr>

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/java/org/apache/hadoop/hbase/ZKNamespaceManager.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/ZKNamespaceManager.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/ZKNamespaceManager.java
index 5abe929..36df002 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ZKNamespaceManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ZKNamespaceManager.java
@@ -54,7 +54,7 @@ public class ZKNamespaceManager extends ZooKeeperListener {
 
   public ZKNamespaceManager(ZooKeeperWatcher zkw) throws IOException {
     super(zkw);
-    nsZNode = zkw.namespaceZNode;
+    nsZNode = zkw.znodePaths.namespaceZNode;
     cache = new ConcurrentSkipListMap<String, NamespaceDescriptor>();
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/example/ZKTableArchiveClient.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/example/ZKTableArchiveClient.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/example/ZKTableArchiveClient.java
index 6f06476..7343643 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/example/ZKTableArchiveClient.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/example/ZKTableArchiveClient.java
@@ -149,7 +149,7 @@ public class ZKTableArchiveClient extends Configured {
    * @return get the znode for long-term archival of a table for
    */
   public static String getArchiveZNode(Configuration conf, ZooKeeperWatcher 
zooKeeper) {
-    return ZKUtil.joinZNode(zooKeeper.baseZNode, 
conf.get(ZOOKEEPER_ZNODE_HFILE_ARCHIVE_KEY,
-      TableHFileArchiveTracker.HFILE_ARCHIVE_ZNODE_PARENT));
+    return ZKUtil.joinZNode(zooKeeper.znodePaths.baseZNode, conf.get(
+      ZOOKEEPER_ZNODE_HFILE_ARCHIVE_KEY, 
TableHFileArchiveTracker.HFILE_ARCHIVE_ZNODE_PARENT));
   }
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java
index bbc615a..cb5df75 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java
@@ -136,7 +136,7 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
   public int remainingTasksInCoordination() {
     int count = 0;
     try {
-      List<String> tasks = ZKUtil.listChildrenNoWatch(watcher, 
watcher.splitLogZNode);
+      List<String> tasks = ZKUtil.listChildrenNoWatch(watcher, 
watcher.znodePaths.splitLogZNode);
       if (tasks != null) {
         int listSize = tasks.size();
         for (int i = 0; i < listSize; i++) {
@@ -288,7 +288,7 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
     final String metaEncodeRegionName = 
HRegionInfo.FIRST_META_REGIONINFO.getEncodedName();
     int count = 0;
     try {
-      List<String> tasks = ZKUtil.listChildrenNoWatch(watcher, 
watcher.splitLogZNode);
+      List<String> tasks = ZKUtil.listChildrenNoWatch(watcher, 
watcher.znodePaths.splitLogZNode);
       if (tasks != null) {
         int listSize = tasks.size();
         for (int i = 0; i < listSize; i++) {
@@ -306,7 +306,8 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
         lastRecoveringNodeCreationTime = Long.MAX_VALUE;
       } else if (!recoveredServerNameSet.isEmpty()) {
         // Remove recovering regions which don't have any RS associated with it
-        List<String> regions = ZKUtil.listChildrenNoWatch(watcher, 
watcher.recoveringRegionsZNode);
+        List<String> regions = ZKUtil.listChildrenNoWatch(watcher,
+          watcher.znodePaths.recoveringRegionsZNode);
         if (regions != null) {
           int listSize = regions.size();
           if (LOG.isDebugEnabled()) {
@@ -323,7 +324,7 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
                 continue;
               }
             }
-            String nodePath = ZKUtil.joinZNode(watcher.recoveringRegionsZNode, 
region);
+            String nodePath = 
ZKUtil.joinZNode(watcher.znodePaths.recoveringRegionsZNode, region);
             List<String> failedServers = ZKUtil.listChildrenNoWatch(watcher, 
nodePath);
             if (failedServers == null || failedServers.isEmpty()) {
               ZKUtil.deleteNode(watcher, nodePath);
@@ -562,13 +563,13 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
   private void lookForOrphans() {
     List<String> orphans;
     try {
-      orphans = ZKUtil.listChildrenNoWatch(this.watcher, 
this.watcher.splitLogZNode);
+      orphans = ZKUtil.listChildrenNoWatch(this.watcher, 
this.watcher.znodePaths.splitLogZNode);
       if (orphans == null) {
-        LOG.warn("could not get children of " + this.watcher.splitLogZNode);
+        LOG.warn("could not get children of " + 
this.watcher.znodePaths.splitLogZNode);
         return;
       }
     } catch (KeeperException e) {
-      LOG.warn("could not get children of " + this.watcher.splitLogZNode + " "
+      LOG.warn("could not get children of " + 
this.watcher.znodePaths.splitLogZNode + " "
           + StringUtils.stringifyException(e));
       return;
     }
@@ -576,7 +577,7 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
     int listSize = orphans.size();
     for (int i = 0; i < listSize; i++) {
       String path = orphans.get(i);
-      String nodepath = ZKUtil.joinZNode(watcher.splitLogZNode, path);
+      String nodepath = ZKUtil.joinZNode(watcher.znodePaths.splitLogZNode, 
path);
       if (ZKSplitLog.isRescanNode(watcher, nodepath)) {
         rescan_nodes++;
         LOG.debug("found orphan rescan node " + path);
@@ -604,7 +605,8 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
       long retries = this.zkretries;
 
       do {
-        String nodePath = ZKUtil.joinZNode(watcher.recoveringRegionsZNode, 
regionEncodeName);
+        String nodePath = 
ZKUtil.joinZNode(watcher.znodePaths.recoveringRegionsZNode,
+          regionEncodeName);
         long lastRecordedFlushedSequenceId = -1;
         try {
           long lastSequenceId =
@@ -680,14 +682,15 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
       throws IOException, InterruptedIOException {
 
     try {
-      List<String> tasks = ZKUtil.listChildrenNoWatch(watcher, 
watcher.splitLogZNode);
+      List<String> tasks = ZKUtil.listChildrenNoWatch(watcher, 
watcher.znodePaths.splitLogZNode);
       if (tasks != null) {
         int listSize = tasks.size();
         for (int i = 0; i < listSize; i++) {
           String t = tasks.get(i);
           byte[] data;
           try {
-            data = ZKUtil.getData(this.watcher, 
ZKUtil.joinZNode(watcher.splitLogZNode, t));
+            data = ZKUtil.getData(this.watcher,
+              ZKUtil.joinZNode(watcher.znodePaths.splitLogZNode, t));
           } catch (InterruptedException e) {
             throw new InterruptedIOException();
           }
@@ -715,11 +718,13 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
       }
 
       // remove recovering regions which doesn't have any RS associated with it
-      List<String> regions = ZKUtil.listChildrenNoWatch(watcher, 
watcher.recoveringRegionsZNode);
+      List<String> regions = ZKUtil.listChildrenNoWatch(watcher,
+        watcher.znodePaths.recoveringRegionsZNode);
       if (regions != null) {
         int listSize = regions.size();
         for (int i = 0; i < listSize; i++) {
-          String nodePath = ZKUtil.joinZNode(watcher.recoveringRegionsZNode, 
regions.get(i));
+          String nodePath = 
ZKUtil.joinZNode(watcher.znodePaths.recoveringRegionsZNode,
+            regions.get(i));
           List<String> regionFailedServers = 
ZKUtil.listChildrenNoWatch(watcher, nodePath);
           if (regionFailedServers == null || regionFailedServers.isEmpty()) {
             ZKUtil.deleteNode(watcher, nodePath);
@@ -754,7 +759,8 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
   }
 
   private List<String> listSplitLogTasks() throws KeeperException {
-    List<String> taskOrRescanList = ZKUtil.listChildrenNoWatch(watcher, 
watcher.splitLogZNode);
+    List<String> taskOrRescanList = ZKUtil.listChildrenNoWatch(watcher,
+      watcher.znodePaths.splitLogZNode);
     if (taskOrRescanList == null || taskOrRescanList.isEmpty()) {
       return Collections.<String> emptyList();
     }
@@ -799,7 +805,8 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
 
     // Firstly check if there are outstanding recovering regions
     try {
-      List<String> regions = ZKUtil.listChildrenNoWatch(watcher, 
watcher.recoveringRegionsZNode);
+      List<String> regions = ZKUtil.listChildrenNoWatch(watcher,
+        watcher.znodePaths.recoveringRegionsZNode);
       if (regions != null && !regions.isEmpty()) {
         hasRecoveringRegions = true;
         previousRecoveryMode = RecoveryMode.LOG_REPLAY;
@@ -815,8 +822,8 @@ public class ZKSplitLogManagerCoordination extends 
ZooKeeperListener implements
             for (int i = 0; i < listSize; i++) {
               String task = tasks.get(i);
               try {
-                byte[] data =
-                    ZKUtil.getData(this.watcher, 
ZKUtil.joinZNode(watcher.splitLogZNode, task));
+                byte[] data = ZKUtil.getData(this.watcher,
+                  ZKUtil.joinZNode(watcher.znodePaths.splitLogZNode, task));
                 if (data == null) continue;
                 SplitLogTask slt = SplitLogTask.parseFrom(data);
                 previousRecoveryMode = slt.getMode();

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.java
index 5558fcb..2bf9d78 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.java
@@ -103,7 +103,7 @@ public class ZkSplitLogWorkerCoordination extends 
ZooKeeperListener implements
    */
   @Override
   public void nodeChildrenChanged(String path) {
-    if (path.equals(watcher.splitLogZNode)) {
+    if (path.equals(watcher.znodePaths.splitLogZNode)) {
       if (LOG.isTraceEnabled()) LOG.trace("tasks arrived or departed on " + 
path);
       synchronized (taskReadyLock) {
         this.taskReadySeq.incrementAndGet();
@@ -335,7 +335,7 @@ public class ZkSplitLogWorkerCoordination extends 
ZooKeeperListener implements
     int availableRSs = 1;
     try {
       List<String> regionServers =
-          ZKUtil.listChildrenNoWatch(watcher, watcher.rsZNode);
+          ZKUtil.listChildrenNoWatch(watcher, watcher.znodePaths.rsZNode);
       availableRSs = Math.max(availableRSs, (regionServers == null) ? 0 : 
regionServers.size());
     } catch (KeeperException e) {
       // do nothing
@@ -411,7 +411,7 @@ public class ZkSplitLogWorkerCoordination extends 
ZooKeeperListener implements
       List<String> paths = null;
       paths = getTaskList();
       if (paths == null) {
-        LOG.warn("Could not get tasks, did someone remove " + 
watcher.splitLogZNode
+        LOG.warn("Could not get tasks, did someone remove " + 
watcher.znodePaths.splitLogZNode
             + " ... worker thread exiting.");
         return;
       }
@@ -429,7 +429,7 @@ public class ZkSplitLogWorkerCoordination extends 
ZooKeeperListener implements
         // don't call ZKSplitLog.getNodeName() because that will lead to
         // double encoding of the path name
         if (this.calculateAvailableSplitters(numTasks) > 0) {
-          grabTask(ZKUtil.joinZNode(watcher.splitLogZNode, paths.get(idx)));
+          grabTask(ZKUtil.joinZNode(watcher.znodePaths.splitLogZNode, 
paths.get(idx)));
         } else {
           LOG.debug("Current region server " + server.getServerName() + " has "
               + this.tasksInProgress.get() + " tasks in progress and can't 
take more.");
@@ -453,7 +453,8 @@ public class ZkSplitLogWorkerCoordination extends 
ZooKeeperListener implements
               int listSize = tmpCopy.size();
               for (int i = 0; i < listSize; i++) {
                 String region = tmpCopy.get(i);
-                String nodePath = 
ZKUtil.joinZNode(watcher.recoveringRegionsZNode, region);
+                String nodePath = 
ZKUtil.joinZNode(watcher.znodePaths.recoveringRegionsZNode,
+                  region);
                 try {
                   if (ZKUtil.checkExists(watcher, nodePath) == -1) {
                     server.getExecutorService().submit(
@@ -486,16 +487,15 @@ public class ZkSplitLogWorkerCoordination extends 
ZooKeeperListener implements
     // it will come out if worker thread exited.
     while (!shouldStop) {
       try {
-        childrenPaths =
-            ZKUtil.listChildrenAndWatchForNewChildren(watcher,
-              watcher.splitLogZNode);
+        childrenPaths = ZKUtil.listChildrenAndWatchForNewChildren(watcher,
+          watcher.znodePaths.splitLogZNode);
         if (childrenPaths != null) {
           return childrenPaths;
         }
       } catch (KeeperException e) {
-        LOG.warn("Could not get children of znode " + watcher.splitLogZNode, 
e);
+        LOG.warn("Could not get children of znode " + 
watcher.znodePaths.splitLogZNode, e);
       }
-      LOG.debug("Retry listChildren of znode " + watcher.splitLogZNode
+      LOG.debug("Retry listChildren of znode " + 
watcher.znodePaths.splitLogZNode
           + " after sleep for " + sleepTime + "ms!");
       Thread.sleep(sleepTime);
     }
@@ -511,14 +511,14 @@ public class ZkSplitLogWorkerCoordination extends 
ZooKeeperListener implements
   public boolean isReady() throws InterruptedException {
     int result = -1;
     try {
-      result = ZKUtil.checkExists(watcher, watcher.splitLogZNode);
+      result = ZKUtil.checkExists(watcher, watcher.znodePaths.splitLogZNode);
     } catch (KeeperException e) {
       // ignore
-      LOG.warn("Exception when checking for " + watcher.splitLogZNode
+      LOG.warn("Exception when checking for " + 
watcher.znodePaths.splitLogZNode
           + " ... retrying", e);
     }
     if (result == -1) {
-      LOG.info(watcher.splitLogZNode
+      LOG.info(watcher.znodePaths.splitLogZNode
           + " znode does not exist, waiting for master to create");
       Thread.sleep(1000);
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java
index 5e84b97..0466e98 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java
@@ -92,7 +92,7 @@ public class ActiveMasterManager extends ZooKeeperListener {
     // shut down, so that state is now irrelevant. This means that the shutdown
     // state must be set while we wait on the active master in order
     // to shutdown this master. See HBASE-8519.
-    if(path.equals(watcher.clusterStateZNode) && !master.isStopped()) {
+    if(path.equals(watcher.znodePaths.clusterStateZNode) && 
!master.isStopped()) {
       clusterShutDown.set(true);
     }
 
@@ -100,7 +100,7 @@ public class ActiveMasterManager extends ZooKeeperListener {
   }
 
   void handle(final String path) {
-    if (path.equals(watcher.getMasterAddressZNode()) && !master.isStopped()) {
+    if (path.equals(watcher.znodePaths.masterAddressZNode) && 
!master.isStopped()) {
       handleMasterNodeChange();
     }
   }
@@ -122,7 +122,7 @@ public class ActiveMasterManager extends ZooKeeperListener {
     // Watch the node and check if it exists.
     try {
       synchronized(clusterHasActiveMaster) {
-        if (ZKUtil.watchAndCheckExists(watcher, 
watcher.getMasterAddressZNode())) {
+        if (ZKUtil.watchAndCheckExists(watcher, 
watcher.znodePaths.masterAddressZNode)) {
           // A master node exists, there is an active master
           LOG.debug("A master is now available");
           clusterHasActiveMaster.set(true);
@@ -156,14 +156,14 @@ public class ActiveMasterManager extends 
ZooKeeperListener {
   boolean blockUntilBecomingActiveMaster(
       int checkInterval, MonitoredTask startupStatus) {
     String backupZNode = ZKUtil.joinZNode(
-      this.watcher.backupMasterAddressesZNode, this.sn.toString());
+      this.watcher.znodePaths.backupMasterAddressesZNode, this.sn.toString());
     while (!(master.isAborted() || master.isStopped())) {
       startupStatus.setStatus("Trying to register in ZK as active master");
       // Try to become the active master, watch if there is another master.
       // Write out our ServerName as versioned bytes.
       try {
         if (MasterAddressTracker.setMasterAddress(this.watcher,
-            this.watcher.getMasterAddressZNode(), this.sn, infoPort)) {
+            this.watcher.znodePaths.masterAddressZNode, this.sn, infoPort)) {
 
           // If we were a backup master before, delete our ZNode from the 
backup
           // master directory since we are the active now)
@@ -187,7 +187,7 @@ public class ActiveMasterManager extends ZooKeeperListener {
 
         String msg;
         byte[] bytes =
-          ZKUtil.getDataAndWatch(this.watcher, 
this.watcher.getMasterAddressZNode());
+          ZKUtil.getDataAndWatch(this.watcher, 
this.watcher.znodePaths.masterAddressZNode);
         if (bytes == null) {
           msg = ("A master was detected, but went down before its address " +
             "could be read.  Attempting to become the next active master");
@@ -204,7 +204,7 @@ public class ActiveMasterManager extends ZooKeeperListener {
             msg = ("Current master has this master's address, " +
               currentMaster + "; master was restarted? Deleting node.");
             // Hurry along the expiration of the znode.
-            ZKUtil.deleteNode(this.watcher, 
this.watcher.getMasterAddressZNode());
+            ZKUtil.deleteNode(this.watcher, 
this.watcher.znodePaths.masterAddressZNode);
 
             // We may have failed to delete the znode at the previous step, but
             //  we delete the file anyway: a second attempt to delete the 
znode is likely to fail again.
@@ -244,7 +244,7 @@ public class ActiveMasterManager extends ZooKeeperListener {
    */
   boolean hasActiveMaster() {
     try {
-      if (ZKUtil.checkExists(watcher, watcher.getMasterAddressZNode()) >= 0) {
+      if (ZKUtil.checkExists(watcher, watcher.znodePaths.masterAddressZNode) 
>= 0) {
         return true;
       }
     }
@@ -270,7 +270,7 @@ public class ActiveMasterManager extends ZooKeeperListener {
         LOG.warn("Failed get of master address: " + e.toString());
       }
       if (activeMaster != null &&  activeMaster.equals(this.sn)) {
-        ZKUtil.deleteNode(watcher, watcher.getMasterAddressZNode());
+        ZKUtil.deleteNode(watcher, watcher.znodePaths.masterAddressZNode);
         // We may have failed to delete the znode at the previous step, but
         //  we delete the file anyway: a second attempt to delete the znode is 
likely to fail again.
         ZNodeClearer.deleteMyEphemeralNodeOnDisk();

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index afd0973..b23ce43 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -765,7 +765,7 @@ public class HMaster extends HRegionServer implements 
MasterServices {
       LOG.info("Converting state from zk to new states:" + entry);
       tableStateManager.setTableState(entry.getKey(), entry.getValue());
     }
-    ZKUtil.deleteChildrenRecursively(getZooKeeper(), 
getZooKeeper().tableZNode);
+    ZKUtil.deleteChildrenRecursively(getZooKeeper(), 
getZooKeeper().znodePaths.tableZNode);
 
     status.setStatus("Submitting log splitting work for previously failed 
region servers");
     metaBootstrap.processDeadServers();
@@ -1690,7 +1690,7 @@ public class HMaster extends HRegionServer implements 
MasterServices {
 
   private void startActiveMasterManager(int infoPort) throws KeeperException {
     String backupZNode = ZKUtil.joinZNode(
-      zooKeeper.backupMasterAddressesZNode, serverName.toString());
+      zooKeeper.znodePaths.backupMasterAddressesZNode, serverName.toString());
     /*
     * Add a ZNode for ourselves in the backup master directory since we
     * may not become the active master. If so, we want the actual active
@@ -2090,7 +2090,7 @@ public class HMaster extends HRegionServer implements 
MasterServices {
     List<String> backupMasterStrings;
     try {
       backupMasterStrings = ZKUtil.listChildrenNoWatch(this.zooKeeper,
-        this.zooKeeper.backupMasterAddressesZNode);
+        this.zooKeeper.znodePaths.backupMasterAddressesZNode);
     } catch (KeeperException e) {
       LOG.warn(this.zooKeeper.prefix("Unable to list backup servers"), e);
       backupMasterStrings = null;
@@ -2104,7 +2104,7 @@ public class HMaster extends HRegionServer implements 
MasterServices {
           byte [] bytes;
           try {
             bytes = ZKUtil.getData(this.zooKeeper, ZKUtil.joinZNode(
-                this.zooKeeper.backupMasterAddressesZNode, s));
+                this.zooKeeper.znodePaths.backupMasterAddressesZNode, s));
           } catch (InterruptedException e) {
             throw new InterruptedIOException();
           }

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterMetaBootstrap.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterMetaBootstrap.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterMetaBootstrap.java
index 9a1ede2..5e1917b 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterMetaBootstrap.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterMetaBootstrap.java
@@ -19,10 +19,9 @@
 package org.apache.hadoop.hbase.master;
 
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Collections;
-import java.util.List;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import org.apache.commons.logging.Log;
@@ -126,14 +125,14 @@ public class MasterMetaBootstrap {
     try {
       List<String> metaReplicaZnodes = zooKeeper.getMetaReplicaNodes();
       for (String metaReplicaZnode : metaReplicaZnodes) {
-        int replicaId = zooKeeper.getMetaReplicaIdFromZnode(metaReplicaZnode);
+        int replicaId = 
zooKeeper.znodePaths.getMetaReplicaIdFromZnode(metaReplicaZnode);
         if (replicaId >= numMetaReplicasConfigured) {
           RegionState r = MetaTableLocator.getMetaRegionState(zooKeeper, 
replicaId);
           LOG.info("Closing excess replica of meta region " + r.getRegion());
           // send a close and wait for a max of 30 seconds
           
ServerManager.closeRegionSilentlyAndWait(master.getClusterConnection(),
               r.getServerName(), r.getRegion(), 30000);
-          ZKUtil.deleteNode(zooKeeper, 
zooKeeper.getZNodeForReplica(replicaId));
+          ZKUtil.deleteNode(zooKeeper, 
zooKeeper.znodePaths.getZNodeForReplica(replicaId));
         }
       }
     } catch (Exception ex) {
@@ -243,7 +242,7 @@ public class MasterMetaBootstrap {
   private Set<ServerName> getPreviouselyFailedMetaServersFromZK() throws 
KeeperException {
     final ZooKeeperWatcher zooKeeper = master.getZooKeeper();
     Set<ServerName> result = new HashSet<ServerName>();
-    String metaRecoveringZNode = 
ZKUtil.joinZNode(zooKeeper.recoveringRegionsZNode,
+    String metaRecoveringZNode = 
ZKUtil.joinZNode(zooKeeper.znodePaths.recoveringRegionsZNode,
       HRegionInfo.FIRST_META_REGIONINFO.getEncodedName());
     List<String> regionFailedServers = ZKUtil.listChildrenNoWatch(zooKeeper, 
metaRecoveringZNode);
     if (regionFailedServers == null) return result;

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
index 5ed80ed..c917aa8 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
@@ -564,7 +564,7 @@ public class ServerManager {
       }
 
       try {
-        List<String> servers = ZKUtil.listChildrenNoWatch(zkw, zkw.rsZNode);
+        List<String> servers = ZKUtil.listChildrenNoWatch(zkw, 
zkw.znodePaths.rsZNode);
         if (servers == null || servers.size() == 0 || (servers.size() == 1
             && servers.contains(sn.toString()))) {
           LOG.info("ZK shows there is only the master self online, exiting 
now");

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java
index 92fab35..c8eefa3 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java
@@ -316,7 +316,7 @@ public abstract class TableLockManager {
       }
 
       private InterProcessLock createTableLock() {
-        String tableLockZNode = ZKUtil.joinZNode(zkWatcher.tableLockZNode,
+        String tableLockZNode = 
ZKUtil.joinZNode(zkWatcher.znodePaths.tableLockZNode,
             tableName.getNameAsString());
 
         ZooKeeperProtos.TableLock data = ZooKeeperProtos.TableLock.newBuilder()
@@ -376,7 +376,7 @@ public abstract class TableLockManager {
 
     public void visitAllLocks(MetadataHandler handler) throws IOException {
       for (String tableName : getTableNames()) {
-        String tableLockZNode = ZKUtil.joinZNode(zkWatcher.tableLockZNode, 
tableName);
+        String tableLockZNode = 
ZKUtil.joinZNode(zkWatcher.znodePaths.tableLockZNode, tableName);
         ZKInterProcessReadWriteLock lock = new ZKInterProcessReadWriteLock(
             zkWatcher, tableLockZNode, null);
         lock.readLock(null).visitLocks(handler);
@@ -388,7 +388,7 @@ public abstract class TableLockManager {
 
       List<String> tableNames;
       try {
-        tableNames = ZKUtil.listChildrenNoWatch(zkWatcher, 
zkWatcher.tableLockZNode);
+        tableNames = ZKUtil.listChildrenNoWatch(zkWatcher, 
zkWatcher.znodePaths.tableLockZNode);
       } catch (KeeperException e) {
         LOG.error("Unexpected ZooKeeper error when listing children", e);
         throw new IOException("Unexpected ZooKeeper exception", e);
@@ -401,7 +401,7 @@ public abstract class TableLockManager {
       //get the table names
       try {
         for (String tableName : getTableNames()) {
-          String tableLockZNode = ZKUtil.joinZNode(zkWatcher.tableLockZNode, 
tableName);
+          String tableLockZNode = 
ZKUtil.joinZNode(zkWatcher.znodePaths.tableLockZNode, tableName);
           ZKInterProcessReadWriteLock lock = new ZKInterProcessReadWriteLock(
               zkWatcher, tableLockZNode, null);
           lock.writeLock(null).reapAllLocks();
@@ -418,7 +418,7 @@ public abstract class TableLockManager {
       //get the table names
       try {
         for (String tableName : getTableNames()) {
-          String tableLockZNode = ZKUtil.joinZNode(zkWatcher.tableLockZNode, 
tableName);
+          String tableLockZNode = 
ZKUtil.joinZNode(zkWatcher.znodePaths.tableLockZNode, tableName);
           ZKInterProcessReadWriteLock lock = new ZKInterProcessReadWriteLock(
               zkWatcher, tableLockZNode, null);
           lock.readLock(null).reapExpiredLocks(lockExpireTimeoutMs);
@@ -435,7 +435,7 @@ public abstract class TableLockManager {
     public void tableDeleted(TableName tableName) throws IOException {
       //table write lock from DeleteHandler is already released, just delete 
the parent znode
       String tableNameStr = tableName.getNameAsString();
-      String tableLockZNode = ZKUtil.joinZNode(zkWatcher.tableLockZNode, 
tableNameStr);
+      String tableLockZNode = 
ZKUtil.joinZNode(zkWatcher.znodePaths.tableLockZNode, tableNameStr);
       try {
         ZKUtil.deleteNode(zkWatcher, tableLockZNode);
       } catch (KeeperException ex) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/SweepJob.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/SweepJob.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/SweepJob.java
index 79cd39c..0b3ca29 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/SweepJob.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/SweepJob.java
@@ -200,7 +200,8 @@ public class SweepJob {
             JavaSerialization.class.getName() + "," + 
WritableSerialization.class.getName());
         conf.set(SWEEP_JOB_ID, id);
         conf.set(SWEEP_JOB_SERVERNAME, serverName.toString());
-        String tableLockNode = ZKUtil.joinZNode(zkw.tableLockZNode, 
lockName.getNameAsString());
+        String tableLockNode = ZKUtil.joinZNode(zkw.znodePaths.tableLockZNode,
+          lockName.getNameAsString());
         conf.set(SWEEP_JOB_TABLE_NODE, tableLockNode);
         job = prepareJob(tn, familyName, scan, conf);
         job.getConfiguration().set(TableInputFormat.SCAN_COLUMN_FAMILY, 
familyName);

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aa4dfa7/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java
index 56983ff..4ebb411 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java
@@ -78,7 +78,7 @@ public abstract class ZKProcedureUtil
     // make sure we are listening for events
     watcher.registerListener(this);
     // setup paths for the zknodes used in procedures
-    this.baseZNode = ZKUtil.joinZNode(watcher.baseZNode, procDescription);
+    this.baseZNode = ZKUtil.joinZNode(watcher.znodePaths.baseZNode, 
procDescription);
     acquiredZnode = ZKUtil.joinZNode(baseZNode, 
ACQUIRED_BARRIER_ZNODE_DEFAULT);
     reachedZnode = ZKUtil.joinZNode(baseZNode, REACHED_BARRIER_ZNODE_DEFAULT);
     abortZnode = ZKUtil.joinZNode(baseZNode, ABORT_ZNODE_DEFAULT);

Reply via email to