You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2017/11/17 21:20:40 UTC
[08/13] hbase git commit: HBASE-19114 Split out o.a.h.h.zookeeper
from hbase-server and hbase-client
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/TokenUtil.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/TokenUtil.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/TokenUtil.java
index 814fe07..3347e1c 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/TokenUtil.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/TokenUtil.java
@@ -26,6 +26,7 @@ import com.google.protobuf.ByteString;
import com.google.protobuf.ServiceException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hbase.zookeeper.ZKWatcher;
import org.apache.yetus.audience.InterfaceAudience;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HConstants;
@@ -37,7 +38,6 @@ import org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos;
import org.apache.hadoop.hbase.security.User;
import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.zookeeper.ZKClusterId;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapreduce.Job;
@@ -289,7 +289,7 @@ public class TokenUtil {
*/
private static Token<AuthenticationTokenIdentifier> getAuthToken(Configuration conf, User user)
throws IOException, InterruptedException {
- ZooKeeperWatcher zkw = new ZooKeeperWatcher(conf, "TokenUtil-getAuthToken", null);
+ ZKWatcher zkw = new ZKWatcher(conf, "TokenUtil-getAuthToken", null);
try {
String clusterId = ZKClusterId.readClusterIdZNode(zkw);
if (clusterId == null) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/ZKSecretWatcher.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/ZKSecretWatcher.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/ZKSecretWatcher.java
index 9f0da78..96502fd 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/ZKSecretWatcher.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/ZKSecretWatcher.java
@@ -25,20 +25,20 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hbase.zookeeper.ZKListener;
+import org.apache.hadoop.hbase.zookeeper.ZKWatcher;
import org.apache.yetus.audience.InterfaceAudience;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.util.Writables;
import org.apache.hadoop.hbase.zookeeper.ZKUtil;
import org.apache.hadoop.hbase.zookeeper.ZNodePaths;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperListener;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
import org.apache.zookeeper.KeeperException;
/**
* Synchronizes token encryption keys across cluster nodes.
*/
@InterfaceAudience.Private
-public class ZKSecretWatcher extends ZooKeeperListener {
+public class ZKSecretWatcher extends ZKListener {
private static final String DEFAULT_ROOT_NODE = "tokenauth";
private static final String DEFAULT_KEYS_PARENT = "keys";
private static final Log LOG = LogFactory.getLog(ZKSecretWatcher.class);
@@ -48,7 +48,7 @@ public class ZKSecretWatcher extends ZooKeeperListener {
private String keysParentZNode;
public ZKSecretWatcher(Configuration conf,
- ZooKeeperWatcher watcher,
+ ZKWatcher watcher,
AuthenticationTokenSecretManager secretManager) {
super(watcher);
this.secretManager = secretManager;
@@ -214,7 +214,7 @@ public class ZKSecretWatcher extends ZooKeeperListener {
watcher.abort("Failed serializing key "+key.getKeyId(), ioe);
}
}
-
+
/**
* refresh keys
*/
@@ -228,7 +228,7 @@ public class ZKSecretWatcher extends ZooKeeperListener {
watcher.abort("Error reading changed keys from zookeeper", ke);
}
}
-
+
/**
* get token keys parent node
* @return token keys parent node
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
index e913b21..8272da6 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
@@ -52,6 +52,7 @@ import org.apache.hadoop.hbase.Tag;
import org.apache.hadoop.hbase.TagType;
import org.apache.hadoop.hbase.TagUtil;
import org.apache.hadoop.hbase.coprocessor.HasRegionServerServices;
+import org.apache.hadoop.hbase.zookeeper.ZKWatcher;
import org.apache.yetus.audience.InterfaceAudience;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Mutation;
@@ -67,7 +68,6 @@ import org.apache.hadoop.hbase.security.Superusers;
import org.apache.hadoop.hbase.security.User;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Pair;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
@InterfaceAudience.Private
public class DefaultVisibilityLabelServiceImpl implements VisibilityLabelService {
@@ -120,7 +120,7 @@ public class DefaultVisibilityLabelServiceImpl implements VisibilityLabelService
// This is a CoreCoprocessor. On creation, we should have gotten an environment that
// implements HasRegionServerServices so we can get at RSS. FIX!!!! Integrate this CP as
// native service.
- ZooKeeperWatcher zk = ((HasRegionServerServices)e).getRegionServerServices().getZooKeeper();
+ ZKWatcher zk = ((HasRegionServerServices)e).getRegionServerServices().getZooKeeper();
try {
labelsCache = VisibilityLabelsCache.createAndGet(zk, this.conf);
} catch (IOException ioe) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java
index 2edf636..85bc0d5 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java
@@ -37,7 +37,7 @@ import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.MultiUs
import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.UserAuthorizations;
import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.VisibilityLabel;
import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
+import org.apache.hadoop.hbase.zookeeper.ZKWatcher;
import org.apache.zookeeper.KeeperException;
/**
@@ -64,7 +64,7 @@ public class VisibilityLabelsCache implements VisibilityLabelOrdinalProvider {
*/
private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
- private VisibilityLabelsCache(ZooKeeperWatcher watcher, Configuration conf) throws IOException {
+ private VisibilityLabelsCache(ZKWatcher watcher, Configuration conf) throws IOException {
zkVisibilityWatcher = new ZKVisibilityLabelWatcher(watcher, this, conf);
try {
zkVisibilityWatcher.start();
@@ -81,7 +81,7 @@ public class VisibilityLabelsCache implements VisibilityLabelOrdinalProvider {
* @return Singleton instance of VisibilityLabelsCache
* @throws IOException
*/
- public synchronized static VisibilityLabelsCache createAndGet(ZooKeeperWatcher watcher,
+ public synchronized static VisibilityLabelsCache createAndGet(ZKWatcher watcher,
Configuration conf) throws IOException {
// VisibilityLabelService#init() for different regions (in same RS) passes same instance of
// watcher as all get the instance from RS.
@@ -99,7 +99,7 @@ public class VisibilityLabelsCache implements VisibilityLabelOrdinalProvider {
* @return Singleton instance of VisibilityLabelsCache
* @throws IllegalStateException
* when this is called before calling
- * {@link #createAndGet(ZooKeeperWatcher, Configuration)}
+ * {@link #createAndGet(ZKWatcher, Configuration)}
*/
public static VisibilityLabelsCache get() {
// By the time this method is called, the singleton instance of VisibilityLabelsCache should
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/ZKVisibilityLabelWatcher.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/ZKVisibilityLabelWatcher.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/ZKVisibilityLabelWatcher.java
index 5a6a414..5cc244c 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/ZKVisibilityLabelWatcher.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/ZKVisibilityLabelWatcher.java
@@ -21,12 +21,12 @@ import java.io.IOException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hbase.zookeeper.ZKListener;
+import org.apache.hadoop.hbase.zookeeper.ZKWatcher;
import org.apache.yetus.audience.InterfaceAudience;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.zookeeper.ZKUtil;
import org.apache.hadoop.hbase.zookeeper.ZNodePaths;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperListener;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
import org.apache.zookeeper.KeeperException;
/**
@@ -34,12 +34,12 @@ import org.apache.zookeeper.KeeperException;
* /hbase/visibility_labels and will have a serialized form of a set of labels in the system.
*/
@InterfaceAudience.Private
-public class ZKVisibilityLabelWatcher extends ZooKeeperListener {
+public class ZKVisibilityLabelWatcher extends ZKListener {
private static final Log LOG = LogFactory.getLog(ZKVisibilityLabelWatcher.class);
private static final String VISIBILITY_LABEL_ZK_PATH = "zookeeper.znode.visibility.label.parent";
private static final String DEFAULT_VISIBILITY_LABEL_NODE = "visibility/labels";
- private static final String VISIBILITY_USER_AUTHS_ZK_PATH =
+ private static final String VISIBILITY_USER_AUTHS_ZK_PATH =
"zookeeper.znode.visibility.user.auths.parent";
private static final String DEFAULT_VISIBILITY_USER_AUTHS_NODE = "visibility/user_auths";
@@ -47,8 +47,8 @@ public class ZKVisibilityLabelWatcher extends ZooKeeperListener {
private String labelZnode;
private String userAuthsZnode;
- public ZKVisibilityLabelWatcher(ZooKeeperWatcher watcher, VisibilityLabelsCache labelsCache,
- Configuration conf) {
+ public ZKVisibilityLabelWatcher(ZKWatcher watcher, VisibilityLabelsCache labelsCache,
+ Configuration conf) {
super(watcher);
this.labelsCache = labelsCache;
String labelZnodeParent = conf.get(VISIBILITY_LABEL_ZK_PATH, DEFAULT_VISIBILITY_LABEL_NODE);
@@ -132,7 +132,7 @@ public class ZKVisibilityLabelWatcher extends ZooKeeperListener {
/**
* Write a labels mirror or user auths mirror into zookeeper
- *
+ *
* @param data
* @param labelsOrUserAuths true for writing labels and false for user auths.
*/
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
index bf4478d..0879a69 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
@@ -130,8 +130,8 @@ import org.apache.hadoop.hbase.wal.WALFactory;
import org.apache.hadoop.hbase.wal.WALSplitter;
import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;
import org.apache.hadoop.hbase.zookeeper.ZKUtil;
+import org.apache.hadoop.hbase.zookeeper.ZKWatcher;
import org.apache.hadoop.hbase.zookeeper.ZNodePaths;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
import org.apache.hadoop.hdfs.protocol.AlreadyBeingCreatedException;
import org.apache.hadoop.ipc.RemoteException;
import org.apache.hadoop.security.UserGroupInformation;
@@ -316,7 +316,7 @@ public class HBaseFsck extends Configured implements Closeable {
private Map<TableName, Set<String>> skippedRegions = new HashMap<>();
- private ZooKeeperWatcher zkw = null;
+ private ZKWatcher zkw = null;
private String hbckEphemeralNodePath = null;
private boolean hbckZodeCreated = false;
@@ -1918,8 +1918,8 @@ public class HBaseFsck extends Configured implements Closeable {
return true;
}
- private ZooKeeperWatcher createZooKeeperWatcher() throws IOException {
- return new ZooKeeperWatcher(getConf(), "hbase Fsck", new Abortable() {
+ private ZKWatcher createZooKeeperWatcher() throws IOException {
+ return new ZKWatcher(getConf(), "hbase Fsck", new Abortable() {
@Override
public void abort(String why, Throwable e) {
LOG.error(why, e);
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java
index 0f36a7b..b1c1f07 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java
@@ -62,7 +62,7 @@ import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;
import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
+import org.apache.hadoop.hbase.zookeeper.ZKWatcher;
import org.apache.yetus.audience.InterfaceAudience;
/**
@@ -900,7 +900,7 @@ public class RegionMover extends AbstractHBaseTool {
return null;
}
if (region.isMetaRegion()) {
- ZooKeeperWatcher zkw = new ZooKeeperWatcher(admin.getConfiguration(), "region_mover", null);
+ ZKWatcher zkw = new ZKWatcher(admin.getConfiguration(), "region_mover", null);
MetaTableLocator locator = new MetaTableLocator();
int maxWaitInSeconds =
admin.getConfiguration().getInt(MOVE_WAIT_MAX_KEY, DEFAULT_MOVE_WAIT_MAX);
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ZKDataMigrator.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ZKDataMigrator.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ZKDataMigrator.java
index e07861e..11327e8 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ZKDataMigrator.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ZKDataMigrator.java
@@ -25,14 +25,14 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hbase.TableName;
-import org.apache.yetus.audience.InterfaceAudience;
import org.apache.hadoop.hbase.client.TableState;
import org.apache.hadoop.hbase.exceptions.DeserializationException;
import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos;
import org.apache.hadoop.hbase.zookeeper.ZKUtil;
+import org.apache.hadoop.hbase.zookeeper.ZKWatcher;
import org.apache.hadoop.hbase.zookeeper.ZNodePaths;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
+import org.apache.yetus.audience.InterfaceAudience;
import org.apache.zookeeper.KeeperException;
/**
@@ -52,7 +52,7 @@ public class ZKDataMigrator {
* table descriptor based states.
*/
@Deprecated
- public static Map<TableName, TableState.State> queryForTableStates(ZooKeeperWatcher zkw)
+ public static Map<TableName, TableState.State> queryForTableStates(ZKWatcher zkw)
throws KeeperException, InterruptedException {
Map<TableName, TableState.State> rv = new HashMap<>();
List<String> children = ZKUtil.listChildrenNoWatch(zkw, zkw.znodePaths.tableZNode);
@@ -86,14 +86,14 @@ public class ZKDataMigrator {
/**
* Gets table state from ZK.
- * @param zkw ZooKeeperWatcher instance to use
+ * @param zkw ZKWatcher instance to use
* @param tableName table we're checking
* @return Null or {@link ZooKeeperProtos.DeprecatedTableState.State} found in znode.
* @throws KeeperException
*/
@Deprecated
private static ZooKeeperProtos.DeprecatedTableState.State getTableState(
- final ZooKeeperWatcher zkw, final TableName tableName)
+ final ZKWatcher zkw, final TableName tableName)
throws KeeperException, InterruptedException {
String znode = ZNodePaths.joinZNode(zkw.znodePaths.tableZNode, tableName.getNameAsString());
byte [] data = ZKUtil.getData(zkw, znode);
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/ReplicationChecker.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/ReplicationChecker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/ReplicationChecker.java
index 9fb8459..839b5ad 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/ReplicationChecker.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/ReplicationChecker.java
@@ -27,13 +27,13 @@ import java.util.Map.Entry;
import java.util.Set;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.zookeeper.ZKWatcher;
import org.apache.yetus.audience.InterfaceAudience;
import org.apache.hadoop.hbase.client.ClusterConnection;
import org.apache.hadoop.hbase.master.cleaner.ReplicationZKNodeCleaner;
import org.apache.hadoop.hbase.replication.ReplicationQueueInfo;
import org.apache.hadoop.hbase.util.HBaseFsck;
import org.apache.hadoop.hbase.util.HBaseFsck.ErrorReporter;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
/*
* Check and fix undeleted replication queues for removed peerId.
@@ -47,8 +47,8 @@ public class ReplicationChecker {
private Set<String> undeletedHFileRefsQueueIds = new HashSet<>();
private final ReplicationZKNodeCleaner cleaner;
- public ReplicationChecker(Configuration conf, ZooKeeperWatcher zkw, ClusterConnection connection,
- ErrorReporter errorReporter) throws IOException {
+ public ReplicationChecker(Configuration conf, ZKWatcher zkw, ClusterConnection connection,
+ ErrorReporter errorReporter) throws IOException {
this.cleaner = new ReplicationZKNodeCleaner(conf, zkw, connection);
this.errorReporter = errorReporter;
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.java
deleted file mode 100644
index fd60765..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- *
- * 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 org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.hadoop.hbase.Abortable;
-import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos;
-import org.apache.zookeeper.KeeperException;
-
-/**
- * Tracker on cluster settings up in zookeeper.
- * This is not related to {@link org.apache.hadoop.hbase.ClusterStatus}. That class
- * is a data structure that holds snapshot of current view on cluster. This class
- * is about tracking cluster attributes up in zookeeper.
- *
- */
-@InterfaceAudience.Private
-public class ClusterStatusTracker extends ZooKeeperNodeTracker {
- private static final Log LOG = LogFactory.getLog(ClusterStatusTracker.class);
-
- /**
- * Creates a cluster status tracker.
- *
- * <p>After construction, use {@link #start} to kick off tracking.
- *
- * @param watcher
- * @param abortable
- */
- public ClusterStatusTracker(ZooKeeperWatcher watcher, Abortable abortable) {
- super(watcher, watcher.znodePaths.clusterStateZNode, abortable);
- }
-
- /**
- * Checks if cluster is up.
- * @return true if the cluster up ('shutdown' is its name up in zk) znode
- * exists with data, false if not
- */
- public boolean isClusterUp() {
- return super.getData(false) != null;
- }
-
- /**
- * Sets the cluster as up.
- * @throws KeeperException unexpected zk exception
- */
- public void setClusterUp()
- throws KeeperException {
- byte [] upData = toByteArray();
- try {
- ZKUtil.createAndWatch(watcher, watcher.znodePaths.clusterStateZNode, upData);
- } catch(KeeperException.NodeExistsException nee) {
- ZKUtil.setData(watcher, watcher.znodePaths.clusterStateZNode, upData);
- }
- }
-
- /**
- * Sets the cluster as down by deleting the znode.
- * @throws KeeperException unexpected zk exception
- */
- public void setClusterDown()
- throws KeeperException {
- try {
- ZKUtil.deleteNode(watcher, watcher.znodePaths.clusterStateZNode);
- } catch(KeeperException.NoNodeException nne) {
- LOG.warn("Attempted to set cluster as down but already down, cluster " +
- "state node (" + watcher.znodePaths.clusterStateZNode + ") not found");
- }
- }
-
- /**
- * @return Content of the clusterup znode as a serialized pb with the pb
- * magic as prefix.
- */
- static byte [] toByteArray() {
- ZooKeeperProtos.ClusterUp.Builder builder =
- ZooKeeperProtos.ClusterUp.newBuilder();
- builder.setStartDate(new java.util.Date().toString());
- return ProtobufUtil.prependPBMagic(builder.build().toByteArray());
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DeletionListener.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DeletionListener.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DeletionListener.java
deleted file mode 100644
index c58a840..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DeletionListener.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * Copyright The Apache Software Foundation
- *
- * 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 java.util.concurrent.CountDownLatch;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.zookeeper.KeeperException;
-
-/**
- * A ZooKeeper watcher meant to detect deletions of ZNodes.
- */
-@InterfaceAudience.Private
-public class DeletionListener extends ZooKeeperListener {
-
- private static final Log LOG = LogFactory.getLog(DeletionListener.class);
-
- private final String pathToWatch;
- private final CountDownLatch deletedLatch;
-
- private volatile Throwable exception;
-
- /**
- * Create a new instance of the deletion watcher.
- * @param zkWatcher ZookeeperWatcher instance
- * @param pathToWatch (Fully qualified) ZNode path that we are waiting to
- * be deleted.
- * @param deletedLatch Count down on this latch when deletion has occurred.
- */
- public DeletionListener(ZooKeeperWatcher zkWatcher, String pathToWatch,
- CountDownLatch deletedLatch) {
- super(zkWatcher);
- this.pathToWatch = pathToWatch;
- this.deletedLatch = deletedLatch;
- exception = null;
- }
-
- /**
- * Check if an exception has occurred when re-setting the watch.
- * @return True if we were unable to re-set a watch on a ZNode due to
- * an exception.
- */
- public boolean hasException() {
- return exception != null;
- }
-
- /**
- * Get the last exception which has occurred when re-setting the watch.
- * Use hasException() to check whether or not an exception has occurred.
- * @return The last exception observed when re-setting the watch.
- */
- public Throwable getException() {
- return exception;
- }
-
- @Override
- public void nodeDataChanged(String path) {
- if (!path.equals(pathToWatch)) {
- return;
- }
- try {
- if (!(ZKUtil.setWatchIfNodeExists(watcher, pathToWatch))) {
- deletedLatch.countDown();
- }
- } catch (KeeperException ex) {
- exception = ex;
- deletedLatch.countDown();
- LOG.error("Error when re-setting the watch on " + pathToWatch, ex);
- }
- }
-
- @Override
- public void nodeDeleted(String path) {
- if (!path.equals(pathToWatch)) {
- return;
- }
- if (LOG.isDebugEnabled()) {
- LOG.debug("Processing delete on " + pathToWatch);
- }
- deletedLatch.countDown();
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DrainingServerTracker.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DrainingServerTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DrainingServerTracker.java
deleted file mode 100644
index cdc6794..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/DrainingServerTracker.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * 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 java.io.IOException;
-import java.util.List;
-import java.util.NavigableSet;
-import java.util.TreeSet;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.hadoop.hbase.Abortable;
-import org.apache.hadoop.hbase.ServerName;
-import org.apache.hadoop.hbase.master.ServerListener;
-import org.apache.hadoop.hbase.master.ServerManager;
-import org.apache.zookeeper.KeeperException;
-
-/**
- * Tracks the list of draining region servers via ZK.
- *
- * <p>This class is responsible for watching for changes to the draining
- * servers list. It handles adds/deletes in the draining RS list and
- * watches each node.
- *
- * <p>If an RS gets deleted from draining list, we call
- * {@link ServerManager#removeServerFromDrainList(ServerName)}
- *
- * <p>If an RS gets added to the draining list, we add a watcher to it and call
- * {@link ServerManager#addServerToDrainList(ServerName)}
- *
- * <p>This class is deprecated in 2.0 because decommission/draining API goes through
- * master in 2.0. Can remove this class in 3.0.
- *
- */
-@InterfaceAudience.Private
-public class DrainingServerTracker extends ZooKeeperListener {
- private static final Log LOG = LogFactory.getLog(DrainingServerTracker.class);
-
- private ServerManager serverManager;
- private final NavigableSet<ServerName> drainingServers = new TreeSet<>();
- private Abortable abortable;
-
- public DrainingServerTracker(ZooKeeperWatcher watcher,
- Abortable abortable, ServerManager serverManager) {
- super(watcher);
- this.abortable = abortable;
- this.serverManager = serverManager;
- }
-
- /**
- * Starts the tracking of draining RegionServers.
- *
- * <p>All Draining RSs will be tracked after this method is called.
- *
- * @throws KeeperException
- */
- public void start() throws KeeperException, IOException {
- watcher.registerListener(this);
- // Add a ServerListener to check if a server is draining when it's added.
- serverManager.registerListener(new ServerListener() {
- @Override
- public void serverAdded(ServerName sn) {
- if (drainingServers.contains(sn)){
- serverManager.addServerToDrainList(sn);
- }
- }
- });
- List<String> servers =
- ZKUtil.listChildrenAndWatchThem(watcher, watcher.znodePaths.drainingZNode);
- add(servers);
- }
-
- private void add(final List<String> servers) throws IOException {
- synchronized(this.drainingServers) {
- this.drainingServers.clear();
- for (String n: servers) {
- final ServerName sn = ServerName.valueOf(ZKUtil.getNodeName(n));
- this.drainingServers.add(sn);
- this.serverManager.addServerToDrainList(sn);
- LOG.info("Draining RS node created, adding to list [" +
- sn + "]");
-
- }
- }
- }
-
- private void remove(final ServerName sn) {
- synchronized(this.drainingServers) {
- this.drainingServers.remove(sn);
- this.serverManager.removeServerFromDrainList(sn);
- }
- }
-
- @Override
- public void nodeDeleted(final String path) {
- if(path.startsWith(watcher.znodePaths.drainingZNode)) {
- final ServerName sn = ServerName.valueOf(ZKUtil.getNodeName(path));
- LOG.info("Draining RS node deleted, removing from list [" +
- sn + "]");
- remove(sn);
- }
- }
-
- @Override
- public void nodeChildrenChanged(final String path) {
- if(path.equals(watcher.znodePaths.drainingZNode)) {
- try {
- final List<String> newNodes =
- ZKUtil.listChildrenAndWatchThem(watcher, watcher.znodePaths.drainingZNode);
- add(newNodes);
- } catch (KeeperException e) {
- abortable.abort("Unexpected zk exception getting RS nodes", e);
- } catch (IOException e) {
- abortable.abort("Unexpected zk exception getting RS nodes", e);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.java
deleted file mode 100644
index 527bc17..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * 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 java.io.IOException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.hadoop.hbase.Abortable;
-import org.apache.hadoop.hbase.exceptions.DeserializationException;
-import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.LoadBalancerProtos;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.zookeeper.KeeperException;
-
-/**
- * Tracks the load balancer state up in ZK
- */
-@InterfaceAudience.Private
-public class LoadBalancerTracker extends ZooKeeperNodeTracker {
- private static final Log LOG = LogFactory.getLog(LoadBalancerTracker.class);
-
- public LoadBalancerTracker(ZooKeeperWatcher watcher,
- Abortable abortable) {
- super(watcher, watcher.znodePaths.balancerZNode, abortable);
- }
-
- /**
- * Return true if the balance switch is on, false otherwise
- */
- public boolean isBalancerOn() {
- byte [] upData = super.getData(false);
- try {
- // if data in ZK is null, use default of on.
- return upData == null || parseFrom(upData).getBalancerOn();
- } catch (DeserializationException dex) {
- LOG.error("ZK state for LoadBalancer could not be parsed " + Bytes.toStringBinary(upData));
- // return false to be safe.
- return false;
- }
- }
-
- /**
- * Set the balancer on/off
- * @param balancerOn
- * @throws KeeperException
- */
- public void setBalancerOn(boolean balancerOn) throws KeeperException {
- byte [] upData = toByteArray(balancerOn);
- try {
- ZKUtil.setData(watcher, watcher.znodePaths.balancerZNode, upData);
- } catch(KeeperException.NoNodeException nne) {
- ZKUtil.createAndWatch(watcher, watcher.znodePaths.balancerZNode, upData);
- }
- super.nodeDataChanged(watcher.znodePaths.balancerZNode);
- }
-
- private byte [] toByteArray(boolean isBalancerOn) {
- LoadBalancerProtos.LoadBalancerState.Builder builder =
- LoadBalancerProtos.LoadBalancerState.newBuilder();
- builder.setBalancerOn(isBalancerOn);
- return ProtobufUtil.prependPBMagic(builder.build().toByteArray());
- }
-
- private LoadBalancerProtos.LoadBalancerState parseFrom(byte [] pbBytes)
- throws DeserializationException {
- ProtobufUtil.expectPBMagicPrefix(pbBytes);
- LoadBalancerProtos.LoadBalancerState.Builder builder =
- LoadBalancerProtos.LoadBalancerState.newBuilder();
- try {
- int magicLen = ProtobufUtil.lengthOfPBMagic();
- ProtobufUtil.mergeFrom(builder, pbBytes, magicLen, pbBytes.length - magicLen);
- } catch (IOException e) {
- throw new DeserializationException(e);
- }
- return builder.build();
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.java
deleted file mode 100644
index 7d6f9fd..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- *
- * 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 java.util.List;
-
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.zookeeper.KeeperException;
-
-/**
- * Tracks the master Maintenance Mode via ZK.
- */
-@InterfaceAudience.Private
-public class MasterMaintenanceModeTracker extends ZooKeeperListener {
- private boolean hasChildren;
-
- public MasterMaintenanceModeTracker(ZooKeeperWatcher watcher) {
- super(watcher);
- hasChildren = false;
- }
-
- public boolean isInMaintenanceMode() {
- return hasChildren;
- }
-
- private void update(String path) {
- if (path.startsWith(watcher.znodePaths.masterMaintZNode)) {
- update();
- }
- }
-
- private void update() {
- try {
- List<String> children =
- ZKUtil.listChildrenAndWatchForNewChildren(watcher, watcher.znodePaths.masterMaintZNode);
- hasChildren = (children != null && children.size() > 0);
- } catch (KeeperException e) {
- // Ignore the ZK keeper exception
- hasChildren = false;
- }
- }
-
- /**
- * Starts the tracking of whether master is in Maintenance Mode.
- */
- public void start() {
- watcher.registerListener(this);
- update();
- }
-
- @Override
- public void nodeCreated(String path) {
- update(path);
- }
-
- @Override
- public void nodeDeleted(String path) {
- update(path);
- }
-
- @Override
- public void nodeChildrenChanged(String path) {
- update(path);
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java
deleted file mode 100644
index ef643bf..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java
+++ /dev/null
@@ -1,472 +0,0 @@
-/*
- *
- * 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 java.io.BufferedReader;
-import java.io.File;
-import java.io.InterruptedIOException;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.net.BindException;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.zookeeper.server.NIOServerCnxnFactory;
-import org.apache.zookeeper.server.ZooKeeperServer;
-import org.apache.zookeeper.server.persistence.FileTxnLog;
-
-import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;
-
-/**
- * TODO: Most of the code in this class is ripped from ZooKeeper tests. Instead
- * of redoing it, we should contribute updates to their code which let us more
- * easily access testing helper objects.
- */
-@InterfaceAudience.Public
-public class MiniZooKeeperCluster {
- private static final Log LOG = LogFactory.getLog(MiniZooKeeperCluster.class);
-
- private static final int TICK_TIME = 2000;
- private static final int DEFAULT_CONNECTION_TIMEOUT = 30000;
- private int connectionTimeout;
-
- private boolean started;
-
- /** The default port. If zero, we use a random port. */
- private int defaultClientPort = 0;
-
- private List<NIOServerCnxnFactory> standaloneServerFactoryList;
- private List<ZooKeeperServer> zooKeeperServers;
- private List<Integer> clientPortList;
-
- private int activeZKServerIndex;
- private int tickTime = 0;
-
- private Configuration configuration;
-
- public MiniZooKeeperCluster() {
- this(new Configuration());
- }
-
- public MiniZooKeeperCluster(Configuration configuration) {
- this.started = false;
- this.configuration = configuration;
- activeZKServerIndex = -1;
- zooKeeperServers = new ArrayList<>();
- clientPortList = new ArrayList<>();
- standaloneServerFactoryList = new ArrayList<>();
- connectionTimeout = configuration.getInt(HConstants.ZK_SESSION_TIMEOUT + ".localHBaseCluster",
- DEFAULT_CONNECTION_TIMEOUT);
- }
-
- /**
- * Add a client port to the list.
- *
- * @param clientPort the specified port
- */
- public void addClientPort(int clientPort) {
- clientPortList.add(clientPort);
- }
-
- /**
- * Get the list of client ports.
- * @return clientPortList the client port list
- */
- @VisibleForTesting
- public List<Integer> getClientPortList() {
- return clientPortList;
- }
-
- /**
- * Check whether the client port in a specific position of the client port list is valid.
- *
- * @param index the specified position
- */
- private boolean hasValidClientPortInList(int index) {
- return (clientPortList.size() > index && clientPortList.get(index) > 0);
- }
-
- public void setDefaultClientPort(int clientPort) {
- if (clientPort <= 0) {
- throw new IllegalArgumentException("Invalid default ZK client port: "
- + clientPort);
- }
- this.defaultClientPort = clientPort;
- }
-
- /**
- * Selects a ZK client port.
- *
- * @param seedPort the seed port to start with; -1 means first time.
- * @Returns a valid and unused client port
- */
- private int selectClientPort(int seedPort) {
- int i;
- int returnClientPort = seedPort + 1;
- if (returnClientPort == 0) {
- // If the new port is invalid, find one - starting with the default client port.
- // If the default client port is not specified, starting with a random port.
- // The random port is selected from the range between 49152 to 65535. These ports cannot be
- // registered with IANA and are intended for dynamic allocation (see http://bit.ly/dynports).
- if (defaultClientPort > 0) {
- returnClientPort = defaultClientPort;
- } else {
- returnClientPort = 0xc000 + new Random().nextInt(0x3f00);
- }
- }
- // Make sure that the port is unused.
- while (true) {
- for (i = 0; i < clientPortList.size(); i++) {
- if (returnClientPort == clientPortList.get(i)) {
- // Already used. Update the port and retry.
- returnClientPort++;
- break;
- }
- }
- if (i == clientPortList.size()) {
- break; // found a unused port, exit
- }
- }
- return returnClientPort;
- }
-
- public void setTickTime(int tickTime) {
- this.tickTime = tickTime;
- }
-
- public int getBackupZooKeeperServerNum() {
- return zooKeeperServers.size()-1;
- }
-
- public int getZooKeeperServerNum() {
- return zooKeeperServers.size();
- }
-
- // / XXX: From o.a.zk.t.ClientBase
- private static void setupTestEnv() {
- // during the tests we run with 100K prealloc in the logs.
- // on windows systems prealloc of 64M was seen to take ~15seconds
- // resulting in test failure (client timeout on first session).
- // set env and directly in order to handle static init/gc issues
- System.setProperty("zookeeper.preAllocSize", "100");
- FileTxnLog.setPreallocSize(100 * 1024);
- }
-
- public int startup(File baseDir) throws IOException, InterruptedException {
- int numZooKeeperServers = clientPortList.size();
- if (numZooKeeperServers == 0) {
- numZooKeeperServers = 1; // need at least 1 ZK server for testing
- }
- return startup(baseDir, numZooKeeperServers);
- }
-
- /**
- * @param baseDir
- * @param numZooKeeperServers
- * @return ClientPort server bound to, -1 if there was a
- * binding problem and we couldn't pick another port.
- * @throws IOException
- * @throws InterruptedException
- */
- public int startup(File baseDir, int numZooKeeperServers) throws IOException,
- InterruptedException {
- if (numZooKeeperServers <= 0)
- return -1;
-
- setupTestEnv();
- shutdown();
-
- int tentativePort = -1; // the seed port
- int currentClientPort;
-
- // running all the ZK servers
- for (int i = 0; i < numZooKeeperServers; i++) {
- File dir = new File(baseDir, "zookeeper_"+i).getAbsoluteFile();
- createDir(dir);
- int tickTimeToUse;
- if (this.tickTime > 0) {
- tickTimeToUse = this.tickTime;
- } else {
- tickTimeToUse = TICK_TIME;
- }
-
- // Set up client port - if we have already had a list of valid ports, use it.
- if (hasValidClientPortInList(i)) {
- currentClientPort = clientPortList.get(i);
- } else {
- tentativePort = selectClientPort(tentativePort); // update the seed
- currentClientPort = tentativePort;
- }
-
- ZooKeeperServer server = new ZooKeeperServer(dir, dir, tickTimeToUse);
- // Setting {min,max}SessionTimeout defaults to be the same as in Zookeeper
- server.setMinSessionTimeout(configuration.getInt("hbase.zookeeper.property.minSessionTimeout", -1));
- server.setMaxSessionTimeout(configuration.getInt("hbase.zookeeper.property.maxSessionTimeout", -1));
- NIOServerCnxnFactory standaloneServerFactory;
- while (true) {
- try {
- standaloneServerFactory = new NIOServerCnxnFactory();
- standaloneServerFactory.configure(
- new InetSocketAddress(currentClientPort),
- configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS, HConstants.DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS));
- } catch (BindException e) {
- LOG.debug("Failed binding ZK Server to client port: " +
- currentClientPort, e);
- // We're told to use some port but it's occupied, fail
- if (hasValidClientPortInList(i)) {
- return -1;
- }
- // This port is already in use, try to use another.
- tentativePort = selectClientPort(tentativePort);
- currentClientPort = tentativePort;
- continue;
- }
- break;
- }
-
- // Start up this ZK server
- standaloneServerFactory.startup(server);
- // Runs a 'stat' against the servers.
- if (!waitForServerUp(currentClientPort, connectionTimeout)) {
- throw new IOException("Waiting for startup of standalone server");
- }
-
- // We have selected a port as a client port. Update clientPortList if necessary.
- if (clientPortList.size() <= i) { // it is not in the list, add the port
- clientPortList.add(currentClientPort);
- }
- else if (clientPortList.get(i) <= 0) { // the list has invalid port, update with valid port
- clientPortList.remove(i);
- clientPortList.add(i, currentClientPort);
- }
-
- standaloneServerFactoryList.add(standaloneServerFactory);
- zooKeeperServers.add(server);
- }
-
- // set the first one to be active ZK; Others are backups
- activeZKServerIndex = 0;
- started = true;
- int clientPort = clientPortList.get(activeZKServerIndex);
- LOG.info("Started MiniZooKeeperCluster and ran successful 'stat' " +
- "on client port=" + clientPort);
- return clientPort;
- }
-
- private void createDir(File dir) throws IOException {
- try {
- if (!dir.exists()) {
- dir.mkdirs();
- }
- } catch (SecurityException e) {
- throw new IOException("creating dir: " + dir, e);
- }
- }
-
- /**
- * @throws IOException
- */
- public void shutdown() throws IOException {
- // shut down all the zk servers
- for (int i = 0; i < standaloneServerFactoryList.size(); i++) {
- NIOServerCnxnFactory standaloneServerFactory =
- standaloneServerFactoryList.get(i);
- int clientPort = clientPortList.get(i);
-
- standaloneServerFactory.shutdown();
- if (!waitForServerDown(clientPort, connectionTimeout)) {
- throw new IOException("Waiting for shutdown of standalone server");
- }
- }
- standaloneServerFactoryList.clear();
-
- for (ZooKeeperServer zkServer: zooKeeperServers) {
- //explicitly close ZKDatabase since ZookeeperServer does not close them
- zkServer.getZKDatabase().close();
- }
- zooKeeperServers.clear();
-
- // clear everything
- if (started) {
- started = false;
- activeZKServerIndex = 0;
- clientPortList.clear();
- LOG.info("Shutdown MiniZK cluster with all ZK servers");
- }
- }
-
- /**@return clientPort return clientPort if there is another ZK backup can run
- * when killing the current active; return -1, if there is no backups.
- * @throws IOException
- * @throws InterruptedException
- */
- public int killCurrentActiveZooKeeperServer() throws IOException,
- InterruptedException {
- if (!started || activeZKServerIndex < 0) {
- return -1;
- }
-
- // Shutdown the current active one
- NIOServerCnxnFactory standaloneServerFactory =
- standaloneServerFactoryList.get(activeZKServerIndex);
- int clientPort = clientPortList.get(activeZKServerIndex);
-
- standaloneServerFactory.shutdown();
- if (!waitForServerDown(clientPort, connectionTimeout)) {
- throw new IOException("Waiting for shutdown of standalone server");
- }
-
- zooKeeperServers.get(activeZKServerIndex).getZKDatabase().close();
-
- // remove the current active zk server
- standaloneServerFactoryList.remove(activeZKServerIndex);
- clientPortList.remove(activeZKServerIndex);
- zooKeeperServers.remove(activeZKServerIndex);
- LOG.info("Kill the current active ZK servers in the cluster " +
- "on client port: " + clientPort);
-
- if (standaloneServerFactoryList.isEmpty()) {
- // there is no backup servers;
- return -1;
- }
- clientPort = clientPortList.get(activeZKServerIndex);
- LOG.info("Activate a backup zk server in the cluster " +
- "on client port: " + clientPort);
- // return the next back zk server's port
- return clientPort;
- }
-
- /**
- * Kill one back up ZK servers
- * @throws IOException
- * @throws InterruptedException
- */
- public void killOneBackupZooKeeperServer() throws IOException,
- InterruptedException {
- if (!started || activeZKServerIndex < 0 ||
- standaloneServerFactoryList.size() <= 1) {
- return ;
- }
-
- int backupZKServerIndex = activeZKServerIndex+1;
- // Shutdown the current active one
- NIOServerCnxnFactory standaloneServerFactory =
- standaloneServerFactoryList.get(backupZKServerIndex);
- int clientPort = clientPortList.get(backupZKServerIndex);
-
- standaloneServerFactory.shutdown();
- if (!waitForServerDown(clientPort, connectionTimeout)) {
- throw new IOException("Waiting for shutdown of standalone server");
- }
-
- zooKeeperServers.get(backupZKServerIndex).getZKDatabase().close();
-
- // remove this backup zk server
- standaloneServerFactoryList.remove(backupZKServerIndex);
- clientPortList.remove(backupZKServerIndex);
- zooKeeperServers.remove(backupZKServerIndex);
- LOG.info("Kill one backup ZK servers in the cluster " +
- "on client port: " + clientPort);
- }
-
- // XXX: From o.a.zk.t.ClientBase
- private static boolean waitForServerDown(int port, long timeout) throws IOException {
- long start = System.currentTimeMillis();
- while (true) {
- try {
- Socket sock = new Socket("localhost", port);
- try {
- OutputStream outstream = sock.getOutputStream();
- outstream.write("stat".getBytes());
- outstream.flush();
- } finally {
- sock.close();
- }
- } catch (IOException e) {
- return true;
- }
-
- if (System.currentTimeMillis() > start + timeout) {
- break;
- }
- try {
- Thread.sleep(250);
- } catch (InterruptedException e) {
- throw (InterruptedIOException)new InterruptedIOException().initCause(e);
- }
- }
- return false;
- }
-
- // XXX: From o.a.zk.t.ClientBase
- private static boolean waitForServerUp(int port, long timeout) throws IOException {
- long start = System.currentTimeMillis();
- while (true) {
- try {
- Socket sock = new Socket("localhost", port);
- BufferedReader reader = null;
- try {
- OutputStream outstream = sock.getOutputStream();
- outstream.write("stat".getBytes());
- outstream.flush();
-
- Reader isr = new InputStreamReader(sock.getInputStream());
- reader = new BufferedReader(isr);
- String line = reader.readLine();
- if (line != null && line.startsWith("Zookeeper version:")) {
- return true;
- }
- } finally {
- sock.close();
- if (reader != null) {
- reader.close();
- }
- }
- } catch (IOException e) {
- // ignore as this is expected
- LOG.info("server localhost:" + port + " not up " + e);
- }
-
- if (System.currentTimeMillis() > start + timeout) {
- break;
- }
- try {
- Thread.sleep(250);
- } catch (InterruptedException e) {
- throw (InterruptedIOException)new InterruptedIOException().initCause(e);
- }
- }
- return false;
- }
-
- public int getClientPort() {
- return activeZKServerIndex < 0 || activeZKServerIndex >= clientPortList.size() ? -1
- : clientPortList.get(activeZKServerIndex);
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.java
deleted file mode 100644
index a993934..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * 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 org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hbase.Abortable;
-import org.apache.hadoop.hbase.exceptions.DeserializationException;
-import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionNormalizerProtos;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.zookeeper.KeeperException;
-
-import java.io.IOException;
-
-/**
- * Tracks region normalizer state up in ZK
- */
-public class RegionNormalizerTracker extends ZooKeeperNodeTracker {
- private static final Log LOG = LogFactory.getLog(RegionNormalizerTracker.class);
-
- public RegionNormalizerTracker(ZooKeeperWatcher watcher,
- Abortable abortable) {
- super(watcher, watcher.znodePaths.regionNormalizerZNode, abortable);
- }
-
- /**
- * Return true if region normalizer is on, false otherwise
- */
- public boolean isNormalizerOn() {
- byte [] upData = super.getData(false);
- try {
- // if data in ZK is null, use default of on.
- return upData == null || parseFrom(upData).getNormalizerOn();
- } catch (DeserializationException dex) {
- LOG.error("ZK state for RegionNormalizer could not be parsed "
- + Bytes.toStringBinary(upData));
- // return false to be safe.
- return false;
- }
- }
-
- /**
- * Set region normalizer on/off
- * @param normalizerOn whether normalizer should be on or off
- * @throws KeeperException
- */
- public void setNormalizerOn(boolean normalizerOn) throws KeeperException {
- byte [] upData = toByteArray(normalizerOn);
- try {
- ZKUtil.setData(watcher, watcher.znodePaths.regionNormalizerZNode, upData);
- } catch(KeeperException.NoNodeException nne) {
- ZKUtil.createAndWatch(watcher, watcher.znodePaths.regionNormalizerZNode, upData);
- }
- super.nodeDataChanged(watcher.znodePaths.regionNormalizerZNode);
- }
-
- private byte [] toByteArray(boolean isNormalizerOn) {
- RegionNormalizerProtos.RegionNormalizerState.Builder builder =
- RegionNormalizerProtos.RegionNormalizerState.newBuilder();
- builder.setNormalizerOn(isNormalizerOn);
- return ProtobufUtil.prependPBMagic(builder.build().toByteArray());
- }
-
- private RegionNormalizerProtos.RegionNormalizerState parseFrom(byte [] pbBytes)
- throws DeserializationException {
- ProtobufUtil.expectPBMagicPrefix(pbBytes);
- RegionNormalizerProtos.RegionNormalizerState.Builder builder =
- RegionNormalizerProtos.RegionNormalizerState.newBuilder();
- try {
- int magicLen = ProtobufUtil.lengthOfPBMagic();
- ProtobufUtil.mergeFrom(builder, pbBytes, magicLen, pbBytes.length - magicLen);
- } catch (IOException e) {
- throw new DeserializationException(e);
- }
- return builder.build();
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionServerTracker.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionServerTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionServerTracker.java
deleted file mode 100644
index c22876a..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionServerTracker.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- *
- * 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 java.io.IOException;
-import java.io.InterruptedIOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.NavigableMap;
-import java.util.TreeMap;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hbase.ServerName;
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.hadoop.hbase.master.MasterServices;
-import org.apache.hadoop.hbase.master.ServerManager;
-import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;
-import org.apache.zookeeper.KeeperException;
-
-/**
- * Tracks the online region servers via ZK.
- *
- * <p>Handling of new RSs checking in is done via RPC. This class
- * is only responsible for watching for expired nodes. It handles
- * listening for changes in the RS node list and watching each node.
- *
- * <p>If an RS node gets deleted, this automatically handles calling of
- * {@link ServerManager#expireServer(ServerName)}
- */
-@InterfaceAudience.Private
-public class RegionServerTracker extends ZooKeeperListener {
- private static final Log LOG = LogFactory.getLog(RegionServerTracker.class);
- private NavigableMap<ServerName, RegionServerInfo> regionServers = new TreeMap<>();
- private ServerManager serverManager;
- private MasterServices server;
-
- public RegionServerTracker(ZooKeeperWatcher watcher,
- MasterServices server, ServerManager serverManager) {
- super(watcher);
- this.server = server;
- this.serverManager = serverManager;
- }
-
- /**
- * Starts the tracking of online RegionServers.
- *
- * <p>All RSs will be tracked after this method is called.
- *
- * @throws KeeperException
- * @throws IOException
- */
- public void start() throws KeeperException, IOException {
- watcher.registerListener(this);
- List<String> servers =
- ZKUtil.listChildrenAndWatchThem(watcher, watcher.znodePaths.rsZNode);
- refresh(servers);
- }
-
- private void refresh(final List<String> servers) throws IOException {
- synchronized(this.regionServers) {
- this.regionServers.clear();
- for (String n: servers) {
- ServerName sn = ServerName.parseServerName(ZKUtil.getNodeName(n));
- if (regionServers.get(sn) == null) {
- RegionServerInfo.Builder rsInfoBuilder = RegionServerInfo.newBuilder();
- try {
- String nodePath = ZNodePaths.joinZNode(watcher.znodePaths.rsZNode, n);
- byte[] data = ZKUtil.getData(watcher, nodePath);
- if (data != null && data.length > 0 && ProtobufUtil.isPBMagicPrefix(data)) {
- int magicLen = ProtobufUtil.lengthOfPBMagic();
- ProtobufUtil.mergeFrom(rsInfoBuilder, data, magicLen, data.length - magicLen);
- }
- if (LOG.isTraceEnabled()) {
- LOG.trace("Added tracking of RS " + nodePath);
- }
- } catch (KeeperException e) {
- LOG.warn("Get Rs info port from ephemeral node", e);
- } catch (IOException e) {
- LOG.warn("Illegal data from ephemeral node", e);
- } catch (InterruptedException e) {
- throw new InterruptedIOException();
- }
- this.regionServers.put(sn, rsInfoBuilder.build());
- }
- }
- }
- if (server.isInitialized()) {
- server.checkIfShouldMoveSystemRegionAsync();
- }
- }
-
- private void remove(final ServerName sn) {
- synchronized(this.regionServers) {
- this.regionServers.remove(sn);
- }
- }
-
- @Override
- public void nodeDeleted(String path) {
- if (path.startsWith(watcher.znodePaths.rsZNode)) {
- String serverName = ZKUtil.getNodeName(path);
- LOG.info("RegionServer ephemeral node deleted, processing expiration [" +
- serverName + "]");
- ServerName sn = ServerName.parseServerName(serverName);
- if (!serverManager.isServerOnline(sn)) {
- LOG.warn(serverName.toString() + " is not online or isn't known to the master."+
- "The latter could be caused by a DNS misconfiguration.");
- return;
- }
- remove(sn);
- this.serverManager.expireServer(sn);
- }
- }
-
- @Override
- public void nodeChildrenChanged(String path) {
- if (path.equals(watcher.znodePaths.rsZNode)
- && !server.isAborted() && !server.isStopped()) {
- try {
- List<String> servers =
- ZKUtil.listChildrenAndWatchThem(watcher, watcher.znodePaths.rsZNode);
- refresh(servers);
- } catch (IOException e) {
- server.abort("Unexpected zk exception getting RS nodes", e);
- } catch (KeeperException e) {
- server.abort("Unexpected zk exception getting RS nodes", e);
- }
- }
- }
-
- public RegionServerInfo getRegionServerInfo(final ServerName sn) {
- return regionServers.get(sn);
- }
-
- /**
- * Gets the online servers.
- * @return list of online servers
- */
- public List<ServerName> getOnlineServers() {
- synchronized (this.regionServers) {
- return new ArrayList<>(this.regionServers.keySet());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/SplitOrMergeTracker.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/SplitOrMergeTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/SplitOrMergeTracker.java
deleted file mode 100644
index 2c5ffba..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/SplitOrMergeTracker.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/**
- * 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 java.io.IOException;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.Abortable;
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.hadoop.hbase.client.MasterSwitchType;
-import org.apache.hadoop.hbase.exceptions.DeserializationException;
-import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.SwitchState;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.zookeeper.KeeperException;
-
-
-/**
- * Tracks the switch of split and merge states in ZK
- *
- */
-@InterfaceAudience.Private
-public class SplitOrMergeTracker {
-
- private String splitZnode;
- private String mergeZnode;
-
- private SwitchStateTracker splitStateTracker;
- private SwitchStateTracker mergeStateTracker;
-
- public SplitOrMergeTracker(ZooKeeperWatcher watcher, Configuration conf,
- Abortable abortable) {
- try {
- if (ZKUtil.checkExists(watcher, watcher.znodePaths.switchZNode) < 0) {
- ZKUtil.createAndFailSilent(watcher, watcher.znodePaths.switchZNode);
- }
- } catch (KeeperException e) {
- throw new RuntimeException(e);
- }
- splitZnode = ZNodePaths.joinZNode(watcher.znodePaths.switchZNode,
- conf.get("zookeeper.znode.switch.split", "split"));
- mergeZnode = ZNodePaths.joinZNode(watcher.znodePaths.switchZNode,
- conf.get("zookeeper.znode.switch.merge", "merge"));
- splitStateTracker = new SwitchStateTracker(watcher, splitZnode, abortable);
- mergeStateTracker = new SwitchStateTracker(watcher, mergeZnode, abortable);
- }
-
- public void start() {
- splitStateTracker.start();
- mergeStateTracker.start();
- }
-
- public boolean isSplitOrMergeEnabled(MasterSwitchType switchType) {
- switch (switchType) {
- case SPLIT:
- return splitStateTracker.isSwitchEnabled();
- case MERGE:
- return mergeStateTracker.isSwitchEnabled();
- default:
- break;
- }
- return false;
- }
-
- public void setSplitOrMergeEnabled(boolean enabled, MasterSwitchType switchType)
- throws KeeperException {
- switch (switchType) {
- case SPLIT:
- splitStateTracker.setSwitchEnabled(enabled);
- break;
- case MERGE:
- mergeStateTracker.setSwitchEnabled(enabled);
- break;
- default:
- break;
- }
- }
-
- private static class SwitchStateTracker extends ZooKeeperNodeTracker {
-
- public SwitchStateTracker(ZooKeeperWatcher watcher, String node, Abortable abortable) {
- super(watcher, node, abortable);
- }
-
- /**
- * Return true if the switch is on, false otherwise
- */
- public boolean isSwitchEnabled() {
- byte [] upData = super.getData(false);
- try {
- // if data in ZK is null, use default of on.
- return upData == null || parseFrom(upData).getEnabled();
- } catch (DeserializationException dex) {
- LOG.error("ZK state for LoadBalancer could not be parsed " + Bytes.toStringBinary(upData));
- // return false to be safe.
- return false;
- }
- }
-
- /**
- * Set the switch on/off
- * @param enabled switch enabled or not?
- * @throws KeeperException keepException will be thrown out
- */
- public void setSwitchEnabled(boolean enabled) throws KeeperException {
- byte [] upData = toByteArray(enabled);
- try {
- ZKUtil.setData(watcher, node, upData);
- } catch(KeeperException.NoNodeException nne) {
- ZKUtil.createAndWatch(watcher, node, upData);
- }
- super.nodeDataChanged(node);
- }
-
- private byte [] toByteArray(boolean enabled) {
- SwitchState.Builder builder = SwitchState.newBuilder();
- builder.setEnabled(enabled);
- return ProtobufUtil.prependPBMagic(builder.build().toByteArray());
- }
-
- private SwitchState parseFrom(byte [] bytes)
- throws DeserializationException {
- ProtobufUtil.expectPBMagicPrefix(bytes);
- SwitchState.Builder builder = SwitchState.newBuilder();
- try {
- int magicLen = ProtobufUtil.lengthOfPBMagic();
- ProtobufUtil.mergeFrom(builder, bytes, magicLen, bytes.length - magicLen);
- } catch (IOException e) {
- throw new DeserializationException(e);
- }
- return builder.build();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKServerTool.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKServerTool.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKServerTool.java
deleted file mode 100644
index 70e58f8..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKServerTool.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- *
- * 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 org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.HBaseInterfaceAudience;
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.ServerName;
-import org.apache.yetus.audience.InterfaceAudience;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Tool for reading ZooKeeper servers from HBase XML configuration and producing
- * a line-by-line list for use by bash scripts.
- */
-@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)
-public class ZKServerTool {
- public static ServerName[] readZKNodes(Configuration conf) {
- List<ServerName> hosts = new LinkedList<>();
- String quorum = conf.get(HConstants.ZOOKEEPER_QUORUM, HConstants.LOCALHOST);
-
- String[] values = quorum.split(",");
- for (String value : values) {
- String[] parts = value.split(":");
- String host = parts[0];
- int port = HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT;
- if (parts.length > 1) {
- port = Integer.parseInt(parts[1]);
- }
- hosts.add(ServerName.valueOf(host, port, -1));
- }
- return hosts.toArray(new ServerName[hosts.size()]);
- }
-
- /**
- * Run the tool.
- * @param args Command line arguments.
- */
- public static void main(String args[]) {
- for(ServerName server: readZKNodes(HBaseConfiguration.create())) {
- // bin/zookeeper.sh relies on the "ZK host" string for grepping which is case sensitive.
- System.out.println("ZK host: " + server.getHostname());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java
deleted file mode 100644
index 1376ba9..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- * 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 java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.yetus.audience.InterfaceAudience;
-
-/**
- * Common methods and attributes used by {@link org.apache.hadoop.hbase.master.SplitLogManager}
- * and {@link org.apache.hadoop.hbase.regionserver.SplitLogWorker}
- * running distributed splitting of WAL logs.
- */
-@InterfaceAudience.Private
-public class ZKSplitLog {
- private static final Log LOG = LogFactory.getLog(ZKSplitLog.class);
-
- /**
- * Gets the full path node name for the log file being split.
- * This method will url encode the filename.
- * @param zkw zk reference
- * @param filename log file name (only the basename)
- */
- public static String getEncodedNodeName(ZooKeeperWatcher zkw, String filename) {
- return ZNodePaths.joinZNode(zkw.znodePaths.splitLogZNode, encode(filename));
- }
-
- public static String getFileName(String node) {
- String basename = node.substring(node.lastIndexOf('/') + 1);
- return decode(basename);
- }
-
- static String encode(String s) {
- try {
- return URLEncoder.encode(s, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException("URLENCODER doesn't support UTF-8");
- }
- }
-
- static String decode(String s) {
- try {
- return URLDecoder.decode(s, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException("URLDecoder doesn't support UTF-8");
- }
- }
-
- public static String getRescanNode(ZooKeeperWatcher zkw) {
- return ZNodePaths.joinZNode(zkw.znodePaths.splitLogZNode, "RESCAN");
- }
-
- /**
- * @param name the last part in path
- * @return whether the node name represents a rescan node
- */
- public static boolean isRescanNode(String name) {
- return name.startsWith("RESCAN");
- }
-
- /**
- * @param zkw
- * @param path the absolute path, starts with '/'
- * @return whether the path represents a rescan node
- */
- public static boolean isRescanNode(ZooKeeperWatcher zkw, String path) {
- String prefix = getRescanNode(zkw);
- if (path.length() <= prefix.length()) {
- return false;
- }
- for (int i = 0; i < prefix.length(); i++) {
- if (prefix.charAt(i) != path.charAt(i)) {
- return false;
- }
- }
- return true;
- }
-
- public static Path getSplitLogDir(Path rootdir, String tmpname) {
- return new Path(new Path(rootdir, HConstants.SPLIT_LOGDIR_NAME), tmpname);
- }
-
- public static void markCorrupted(Path rootdir, String logFileName,
- FileSystem fs) {
- Path file = new Path(getSplitLogDir(rootdir, logFileName), "corrupt");
- try {
- fs.createNewFile(file);
- } catch (IOException e) {
- LOG.warn("Could not flag a log file as corrupted. Failed to create " +
- file, e);
- }
- }
-
- public static boolean isCorrupted(Path rootdir, String logFileName,
- FileSystem fs) throws IOException {
- Path file = new Path(getSplitLogDir(rootdir, logFileName), "corrupt");
- boolean isCorrupt;
- isCorrupt = fs.exists(file);
- return isCorrupt;
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServer.java
deleted file mode 100644
index 341fbbd..0000000
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServer.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/**
- *
- * 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 java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.curator.shaded.com.google.common.base.Stopwatch;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.HBaseInterfaceAudience;
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.ZooKeeperMain;
-
-/**
- * Tool for running ZookeeperMain from HBase by reading a ZooKeeper server
- * from HBase XML configuration.
- */
-@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)
-public class ZooKeeperMainServer {
- private static final String SERVER_ARG = "-server";
-
- public String parse(final Configuration c) {
- return ZKConfig.getZKQuorumServersString(c);
- }
-
- /**
- * ZooKeeper 3.4.6 broke being able to pass commands on command line.
- * See ZOOKEEPER-1897. This class is a hack to restore this faclity.
- */
- private static class HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain extends ZooKeeperMain {
- public HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain(String[] args)
- throws IOException, InterruptedException {
- super(args);
- // Make sure we are connected before we proceed. Can take a while on some systems. If we
- // run the command without being connected, we get ConnectionLoss KeeperErrorConnection...
- Stopwatch stopWatch = Stopwatch.createStarted();
- while (!this.zk.getState().isConnected()) {
- Thread.sleep(1);
- if (stopWatch.elapsed(TimeUnit.SECONDS) > 10) {
- throw new InterruptedException("Failed connect after waiting " +
- stopWatch.elapsed(TimeUnit.SECONDS) + "seconds; state=" + this.zk.getState() +
- "; " + this.zk);
- }
- }
- }
-
- /**
- * Run the command-line args passed. Calls System.exit when done.
- * @throws KeeperException
- * @throws IOException
- * @throws InterruptedException
- */
- void runCmdLine() throws KeeperException, IOException, InterruptedException {
- processCmd(this.cl);
- System.exit(0);
- }
- }
-
- /**
- * @param args
- * @return True if argument strings have a '-server' in them.
- */
- private static boolean hasServer(final String args[]) {
- return args.length > 0 && args[0].equals(SERVER_ARG);
- }
-
- /**
- * @param args
- * @return True if command-line arguments were passed.
- */
- private static boolean hasCommandLineArguments(final String args[]) {
- if (hasServer(args)) {
- if (args.length < 2) throw new IllegalStateException("-server param but no value");
- return args.length > 2;
- }
- return args.length > 0;
- }
-
- /**
- * Run the tool.
- * @param args Command line arguments. First arg is path to zookeepers file.
- */
- public static void main(String args[]) throws Exception {
- String [] newArgs = args;
- if (!hasServer(args)) {
- // Add the zk ensemble from configuration if none passed on command-line.
- Configuration conf = HBaseConfiguration.create();
- String hostport = new ZooKeeperMainServer().parse(conf);
- if (hostport != null && hostport.length() > 0) {
- newArgs = new String[args.length + 2];
- System.arraycopy(args, 0, newArgs, 2, args.length);
- newArgs[0] = "-server";
- newArgs[1] = hostport;
- }
- }
- // If command-line arguments, run our hack so they are executed.
- // ZOOKEEPER-1897 was committed to zookeeper-3.4.6 but elsewhere in this class we say
- // 3.4.6 breaks command-processing; TODO.
- if (hasCommandLineArguments(args)) {
- HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain zkm =
- new HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain(newArgs);
- zkm.runCmdLine();
- } else {
- ZooKeeperMain.main(newArgs);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/hbase/blob/330b0d05/hbase-server/src/main/resources/hbase-webapps/master/zk.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/zk.jsp b/hbase-server/src/main/resources/hbase-webapps/master/zk.jsp
index 4465162..1951617 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/zk.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/zk.jsp
@@ -20,11 +20,11 @@
<%@ page contentType="text/html;charset=UTF-8"
import="org.apache.commons.lang3.StringEscapeUtils"
import="org.apache.hadoop.hbase.zookeeper.ZKUtil"
- import="org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher"
+ import="org.apache.hadoop.hbase.zookeeper.ZKWatcher"
import="org.apache.hadoop.hbase.HBaseConfiguration"
import="org.apache.hadoop.hbase.master.HMaster"%><%
HMaster master = (HMaster)getServletContext().getAttribute(HMaster.MASTER);
- ZooKeeperWatcher watcher = master.getZooKeeper();
+ ZKWatcher watcher = master.getZooKeeper();
%>
<!DOCTYPE html>
<?xml version="1.0" encoding="UTF-8" ?>