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 2016/12/21 00:52:44 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)

Amending-Author: Andrew Purtell <ap...@apache.org>


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

Branch: refs/heads/0.98
Commit: f63b5a0db9e630af69654fca59cf7ab3f724245f
Parents: ecdcb22
Author: Stephen Yuan Jiang <sy...@gmail.com>
Authored: Sat Jul 23 20:21:32 2016 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue Dec 20 15:38:45 2016 -0800

----------------------------------------------------------------------
 .../apache/hadoop/hbase/client/HBaseAdmin.java  |   16 +
 .../hadoop/hbase/client/HConnectionManager.java |    8 +
 .../hbase/zookeeper/ZooKeeperWatcher.java       |    5 +
 .../hbase/protobuf/generated/MasterProtos.java  | 1632 ++++++++++++++----
 .../protobuf/generated/SnapshotProtos.java      |   94 +-
 hbase-protocol/src/main/protobuf/Master.proto   |   13 +
 .../hadoop/hbase/master/CatalogJanitor.java     |   11 +
 .../org/apache/hadoop/hbase/master/HMaster.java |   38 +-
 .../hadoop/hbase/master/MasterServices.java     |    7 +
 .../org/apache/hadoop/hbase/util/HBaseFsck.java |  183 +-
 .../zookeeper/MasterMaintenanceModeTracker.java |   81 +
 .../hadoop/hbase/master/TestCatalogJanitor.java |    5 +
 12 files changed, 1608 insertions(+), 485 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/f63b5a0d/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 745da57..09801f5 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
@@ -108,6 +108,8 @@ import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetSchemaAlterSta
 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetSchemaAlterStatusResponse;
 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.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.IsRestoreSnapshotDoneRequest;
@@ -2245,6 +2247,20 @@ public class HBaseAdmin implements Abortable, Closeable {
     }
   }
 
+  /**
+   * Check whether Master is in maintenance mode
+   *
+   * @throws IOException if a remote or network exception occurs
+   */
+  boolean isMasterInMaintenanceMode() throws IOException {
+    return executeCallable(new MasterCallable<IsInMaintenanceModeResponse>(getConnection()) {
+      @Override
+      public IsInMaintenanceModeResponse call() throws ServiceException {
+        return master.isMasterInMaintenanceMode(null,
+          IsInMaintenanceModeRequest.newBuilder().build());
+      }
+    }).getInMaintenanceMode();
+  }
 
   /**
    * @return cluster status

http://git-wip-us.apache.org/repos/asf/hbase/blob/f63b5a0d/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
index 7e723eb..fa8e52d 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
@@ -126,6 +126,8 @@ import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsBalancerEnabled
 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsBalancerEnabledResponse;
 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledRequest;
 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledResponse;
+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.IsMasterRunningRequest;
 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsMasterRunningResponse;
 import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsProcedureDoneRequest;
@@ -2086,6 +2088,12 @@ public class HConnectionManager {
         }
 
         @Override
+        public IsInMaintenanceModeResponse isMasterInMaintenanceMode(RpcController controller,
+            IsInMaintenanceModeRequest request) throws ServiceException {
+          return stub.isMasterInMaintenanceMode(controller, request);
+        }
+
+        @Override
         public BalanceResponse balance(RpcController controller,
             BalanceRequest request) throws ServiceException {
           return stub.balance(controller, request);

http://git-wip-us.apache.org/repos/asf/hbase/blob/f63b5a0d/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 57347e6..9a259c0 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
@@ -120,6 +120,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";
 
   // Certain ZooKeeper nodes need to be world-readable
   public static final ArrayList<ACL> CREATOR_ALL_AND_WORLD_READABLE =
@@ -199,6 +201,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);
@@ -441,6 +444,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"));
   }
 
   /**