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 */