Repository: hbase Updated Branches: refs/heads/branch-1.3 22233a28c -> c23b7c9c8
HBASE-18362 hbck should not report split replica parent region from meta as errors (Huaxiang Sun) Signed-off-by: Esteban Gutierrez <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/c23b7c9c Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/c23b7c9c Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/c23b7c9c Branch: refs/heads/branch-1.3 Commit: c23b7c9c80d7663741b598f221cca8b4eb74033c Parents: 22233a2 Author: Esteban Gutierrez <[email protected]> Authored: Thu Jul 27 15:59:07 2017 -0500 Committer: Esteban Gutierrez <[email protected]> Committed: Thu Jul 27 16:00:03 2017 -0500 ---------------------------------------------------------------------- .../org/apache/hadoop/hbase/util/HBaseFsck.java | 10 ++++++++ .../apache/hadoop/hbase/util/TestHBaseFsck.java | 25 ++++++++++++++++++++ 2 files changed, 35 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/c23b7c9c/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 a5b63ae..eae8a64 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 @@ -2311,6 +2311,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/c23b7c9c/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java index 98aecce..9b628ee 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java @@ -210,6 +210,31 @@ public class TestHBaseFsck { EnvironmentEdgeManager.reset(); } + /* + * 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); + TEST_UTIL.getHBaseAdmin().flush(table.getName()); + + // disable catalog janitor + TEST_UTIL.getHBaseAdmin().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 + TEST_UTIL.getHBaseAdmin().enableCatalogJanitor(true); + } + } + @Test (timeout=180000) public void testHBaseFsck() throws Exception { assertNoErrors(doFsck(conf, false));
