Repository: hbase
Updated Branches:
  refs/heads/master 3536c58af -> 9a1661832


HBASE-18362 hbck should not report split replica parent region from meta as 
errors (Huaxiang Sun)

Signed-off-by: Esteban Gutierrez <este...@apache.org>


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

Branch: refs/heads/master
Commit: 9a1661832d5f515df2addf706d0e249a8a2bb8cb
Parents: 3536c58
Author: Esteban Gutierrez <este...@apache.org>
Authored: Thu Jul 27 15:58:16 2017 -0500
Committer: Esteban Gutierrez <este...@apache.org>
Committed: Thu Jul 27 15:58:16 2017 -0500

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/util/HBaseFsck.java | 10 ++++++++
 .../hbase/util/TestHBaseFsckReplicas.java       | 25 ++++++++++++++++++++
 2 files changed, 35 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/9a166183/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 d4f8e45..ff5d482 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
@@ -2484,6 +2484,16 @@ public class HBaseFsck extends Configured implements 
Closeable {
           return;
         }
       }
+
+      // For Replica region, we need to do a similar check. If replica is not 
split successfully,
+      // error is going to be reported against primary daughter region.
+      if (hbi.getReplicaId() != HRegionInfo.DEFAULT_REPLICA_ID) {
+        LOG.info("Region " + descriptiveName + " is a split parent in META, in 
HDFS, "
+            + "and not deployed on any region server. This may be transient.");
+        hbi.setSkipChecks(true);
+        return;
+      }
+
       errors.reportError(ERROR_CODE.LINGERING_SPLIT_PARENT, "Region "
           + descriptiveName + " is a split parent in META, in HDFS, "
           + "and not deployed on any region server. This could be transient, "

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a166183/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckReplicas.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckReplicas.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckReplicas.java
index 3d0647e..6e49b81 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckReplicas.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckReplicas.java
@@ -111,6 +111,31 @@ public class TestHBaseFsckReplicas extends 
BaseTestHBaseFsck {
   }
 
   /*
+ * This creates a table with region_replica > 1, do a split, check
+ * that hbck will not report split replica parent as lingering split parent
+ */
+  @Test public void testHbckReportReplicaLingeringSplitParent() throws 
Exception {
+    TableName table = 
TableName.valueOf("testHbckReportReplicaLingeringSplitParent");
+
+    try {
+      setupTableWithRegionReplica(table, 2);
+      admin.flush(table);
+
+      // disable catalog janitor
+      admin.enableCatalogJanitor(false);
+      admin.split(table, Bytes.toBytes("A1"));
+
+      Thread.sleep(1000);
+      // run hbck again to make sure we don't see any errors
+      assertNoErrors(doFsck(conf, false));
+    } finally {
+      cleanupTable(table);
+      // enable catalog janitor
+      admin.enableCatalogJanitor(true);
+    }
+  }
+
+  /*
  * This creates a table with region_replica > 1 and verifies hbck runs
  * successfully
  */

Reply via email to