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"));
   }
 
   /**