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);