You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by sy...@apache.org on 2016/07/23 23:03:47 UTC
[3/3] hbase git commit: HBASE-16008 A robust way deal with early
termination of HBCK (Stephen Yuan Jiang)
HBASE-16008 A robust way deal with early termination of HBCK (Stephen Yuan Jiang)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/bdd7782f
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/bdd7782f
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/bdd7782f
Branch: refs/heads/master
Commit: bdd7782f054a4740bb63f4d9781ffe083d51e4bf
Parents: cd0b85e
Author: Stephen Yuan Jiang <sy...@gmail.com>
Authored: Sat Jul 23 14:47:11 2016 -0700
Committer: Stephen Yuan Jiang <sy...@gmail.com>
Committed: Sat Jul 23 14:47:11 2016 -0700
----------------------------------------------------------------------
.../org/apache/hadoop/hbase/client/Admin.java | 7 +
.../hbase/client/ConnectionImplementation.java | 7 +
.../apache/hadoop/hbase/client/HBaseAdmin.java | 15 +
.../hbase/zookeeper/ZooKeeperWatcher.java | 5 +
.../hbase/protobuf/generated/MasterProtos.java | 2574 ++++++++++++------
hbase-protocol/src/main/protobuf/Master.proto | 13 +
.../hadoop/hbase/master/CatalogJanitor.java | 11 +
.../org/apache/hadoop/hbase/master/HMaster.java | 44 +-
.../hadoop/hbase/master/MasterRpcServices.java | 9 +
.../hadoop/hbase/master/MasterServices.java | 5 +
.../org/apache/hadoop/hbase/util/HBaseFsck.java | 156 +-
.../zookeeper/MasterMaintenanceModeTracker.java | 81 +
.../hbase/zookeeper/SplitOrMergeTracker.java | 2 -
.../hbase/master/MockNoopMasterServices.java | 5 +
.../hadoop/hbase/util/TestHBaseFsckOneRS.java | 2 -
15 files changed, 2011 insertions(+), 925 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/bdd7782f/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
index df79dcf..0610517 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
@@ -959,6 +959,13 @@ public interface Admin extends Abortable, Closeable {
void stopMaster() throws IOException;
/**
+ * Check whether Master is in maintenance mode
+ *
+ * @throws IOException if a remote or network exception occurs
+ */
+ boolean isMasterInMaintenanceMode() throws IOException;
+
+ /**
* Stop the designated regionserver
*
* @param hostnamePort Hostname and port delimited by a <code>:</code> as in
http://git-wip-us.apache.org/repos/asf/hbase/blob/bdd7782f/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 9b913c8..bb5c996 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
@@ -1416,6 +1416,13 @@ class ConnectionImplementation implements ClusterConnection, Closeable {
}
@Override
+ public MasterProtos.IsInMaintenanceModeResponse isMasterInMaintenanceMode(
+ final RpcController controller,
+ final MasterProtos.IsInMaintenanceModeRequest request) throws ServiceException {
+ return stub.isMasterInMaintenanceMode(controller, request);
+ }
+
+ @Override
public MasterProtos.BalanceResponse balance(RpcController controller,
MasterProtos.BalanceRequest request) throws ServiceException {
return stub.balance(controller, request);
http://git-wip-us.apache.org/repos/asf/hbase/blob/bdd7782f/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 074fe7f..29650ef 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
@@ -130,6 +130,8 @@ import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetSchemaAlterSta
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetTableDescriptorsRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetTableDescriptorsResponse;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetTableNamesRequest;
+import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsInMaintenanceModeRequest;
+import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsInMaintenanceModeResponse;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsProcedureDoneRequest;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsProcedureDoneResponse;
import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsSnapshotDoneRequest;
@@ -1933,6 +1935,19 @@ public class HBaseAdmin implements Admin {
}
@Override
+ public boolean isMasterInMaintenanceMode() throws IOException {
+ return executeCallable(new MasterCallable<IsInMaintenanceModeResponse>(getConnection()) {
+ @Override
+ public IsInMaintenanceModeResponse call(int callTimeout) throws ServiceException {
+ PayloadCarryingRpcController controller = rpcControllerFactory.newController();
+ controller.setCallTimeout(callTimeout);
+ return master.isMasterInMaintenanceMode(
+ controller, IsInMaintenanceModeRequest.newBuilder().build());
+ }
+ }).getInMaintenanceMode();
+ }
+
+ @Override
public ClusterStatus getClusterStatus() throws IOException {
return executeCallable(new MasterCallable<ClusterStatus>(getConnection()) {
@Override
http://git-wip-us.apache.org/repos/asf/hbase/blob/bdd7782f/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 7cbfc98..5ef7171 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
@@ -123,6 +123,8 @@ public class ZooKeeperWatcher implements Watcher, Abortable, Closeable {
public String recoveringRegionsZNode;
// znode containing namespace descriptors
public static String namespaceZNode = "namespace";
+ // znode of indicating master maintenance mode
+ public static String masterMaintZNode = "masterMaintenance";
public final static String META_ZNODE_PREFIX = "meta-region-server";
@@ -194,6 +196,7 @@ public class ZooKeeperWatcher implements Watcher, Abortable, Closeable {
ZKUtil.createAndFailSilent(this, backupMasterAddressesZNode);
ZKUtil.createAndFailSilent(this, tableLockZNode);
ZKUtil.createAndFailSilent(this, recoveringRegionsZNode);
+ ZKUtil.createAndFailSilent(this, masterMaintZNode);
} catch (KeeperException e) {
throw new ZooKeeperConnectionException(
prefix("Unexpected KeeperException creating base node"), e);
@@ -442,6 +445,8 @@ public class ZooKeeperWatcher implements Watcher, Abortable, Closeable {
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"));
}
/**