Skip to content

Commit

Permalink
HBASE-27560 fix consistencyCheck did not report the hole on last regi…
Browse files Browse the repository at this point in the history
…on (#4950)

Signed-off-by: Duo Zhang <[email protected]>
(cherry picked from commit c1b9d8b)
  • Loading branch information
liuzhongjun authored and Apache9 committed Jan 11, 2023
1 parent a48d276 commit 209f9b5
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -180,10 +180,10 @@ private RegionInfo metaTableConsistencyCheck(Result metaTableRow) {
addOverlap(this.highestEndKeyRegionInfo, ri);
}
}
this.previous = ri;
this.highestEndKeyRegionInfo =
MetaFixer.getRegionInfoWithLargestEndKey(this.highestEndKeyRegionInfo, ri);
}
this.previous = ri;
this.highestEndKeyRegionInfo =
MetaFixer.getRegionInfoWithLargestEndKey(this.highestEndKeyRegionInfo, ri);
return ri;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.TableNotEnabledException;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.client.RegionInfoBuilder;
Expand Down Expand Up @@ -67,6 +68,8 @@ public class TestCatalogJanitorCluster {
private static final TableName T3 = TableName.valueOf("t3");
private static final TableName T4 = TableName.valueOf("t4");
private static final TableName T5 = TableName.valueOf("t5");
private static final TableName T6 = TableName.valueOf("t6");
private static final TableName T7 = TableName.valueOf("t7");

@Before
public void before() throws Exception {
Expand All @@ -83,6 +86,9 @@ public void before() throws Exception {
final byte[][] keysForT5 = { Bytes.toBytes("bb"), Bytes.toBytes("cc"), Bytes.toBytes("dd") };

TEST_UTIL.createTable(T5, HConstants.CATALOG_FAMILY, keysForT5);

TEST_UTIL.createMultiRegionTable(T6, new byte[][] { HConstants.CATALOG_FAMILY });
TEST_UTIL.createMultiRegionTable(T7, new byte[][] { HConstants.CATALOG_FAMILY });
}

@After
Expand Down Expand Up @@ -230,7 +236,7 @@ private static byte[] incrementRow(byte[] row) {
}

@Test
public void testHoles() throws IOException {
public void testHoles() throws IOException, InterruptedException {
CatalogJanitor janitor = TEST_UTIL.getHBaseCluster().getMaster().getCatalogJanitor();

CatalogJanitorReport report = janitor.getLastReport();
Expand All @@ -240,6 +246,9 @@ public void testHoles() throws IOException {
verifyCornerHoles(janitor, T1);
// Verify start and end region holes
verifyCornerHoles(janitor, T2);
// Verify start and end region holes when next table is disable see: HBASE-27560
disableTable(T7);
verifyCornerHoles(janitor, T6);
verifyMiddleHole(janitor);
// Verify that MetaFixer is able to fix these holes
fixHoles(janitor);
Expand All @@ -249,8 +258,8 @@ private void fixHoles(CatalogJanitor janitor) throws IOException {
MetaFixer metaFixer = new MetaFixer(TEST_UTIL.getHBaseCluster().getMaster());
janitor.scan();
CatalogJanitorReport report = janitor.getLastReport();
// Verify total number of holes, 2 in t1 and t2 each and one in t3
assertEquals("Number of holes are not matching", 5, report.getHoles().size());
// Verify total number of holes, 2 in t1, t2, t6 each and one in t3
assertEquals("Number of holes are not matching", 7, report.getHoles().size());
metaFixer.fix();
janitor.scan();
report = janitor.getLastReport();
Expand Down Expand Up @@ -323,4 +332,13 @@ private RegionInfo getRegionInfo(TableName tableName, byte[] row) throws IOExcep
assertNotNull(regionInfo);
return regionInfo;
}

private void disableTable(TableName tableName) throws IOException, InterruptedException {
try {
TEST_UTIL.getAdmin().disableTable(tableName);
TEST_UTIL.waitTableDisabled(tableName, 30000);
} catch (TableNotEnabledException e) {
LOG.debug("Table: " + tableName + " already disabled, ignore.");
}
}
}

0 comments on commit 209f9b5

Please sign in to comment.