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]>
  • Loading branch information
liuzhongjun authored Jan 11, 2023
1 parent 991ca95 commit c1b9d8b
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 @@ -181,10 +181,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 @@ -32,6 +32,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 @@ -68,6 +69,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 @@ -84,6 +87,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 @@ -231,7 +237,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 @@ -241,6 +247,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 @@ -250,8 +259,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 @@ -327,4 +336,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 c1b9d8b

Please sign in to comment.