You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Yi Mei (Jira)" <ji...@apache.org> on 2021/07/22 04:59:00 UTC
[jira] [Updated] (HBASE-24734) RegionInfo#containsRange should
support check meta table
[ https://issues.apache.org/jira/browse/HBASE-24734?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Yi Mei updated HBASE-24734:
---------------------------
Summary: RegionInfo#containsRange should support check meta table (was: Wrong comparator opening Region when 'split-to-WAL' enabled.)
> RegionInfo#containsRange should support check meta table
> --------------------------------------------------------
>
> Key: HBASE-24734
> URL: https://issues.apache.org/jira/browse/HBASE-24734
> Project: HBase
> Issue Type: Sub-task
> Components: HFile, MTTR
> Reporter: Michael Stack
> Priority: Major
>
> Came across this when we were testing the 'split-to-hfile' feature running ITBLL:
>
> {code:java}
> 2020-07-10 10:16:49,983 INFO org.apache.hadoop.hbase.regionserver.HRegion: Closing region hbase:meta,,1.15882307402020-07-10 10:16:49,997 INFO org.apache.hadoop.hbase.regionserver.HRegion: Closed hbase:meta,,1.15882307402020-07-10 10:16:49,998 WARN org.apache.hadoop.hbase.regionserver.handler.AssignRegionHandler: Fatal error occurred while opening region hbase:meta,,1.1588230740, aborting...java.lang.IllegalArgumentException: Invalid range: IntegrationTestBigLinkedList,,1594350463222.8f89e01a5245e79946e22d8a8ab4698b. > IntegrationTestBigLinkedList,\x10\x02J\xA1,1594349535271.be24dc276f686e6dcc7fb9d3f91c8387. at org.apache.hadoop.hbase.client.RegionInfoBuilder$MutableRegionInfo.containsRange(RegionInfoBuilder.java:300) at org.apache.hadoop.hbase.regionserver.HStore.tryCommitRecoveredHFile(HStore.java:1111) at org.apache.hadoop.hbase.regionserver.HRegion.loadRecoveredHFilesIfAny(HRegion.java:5442) at org.apache.hadoop.hbase.regionserver.HRegion.initializeRegionInternals(HRegion.java:1010) at org.apache.hadoop.hbase.regionserver.HRegion.initialize(HRegion.java:950) at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:7490) at org.apache.hadoop.hbase.regionserver.HRegion.openHRegionFromTableDir(HRegion.java:7448) at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:7424) at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:7382) at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:7333) at org.apache.hadoop.hbase.regionserver.handler.AssignRegionHandler.process(AssignRegionHandler.java:135) at org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:104) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)2020-07-10 10:16:50,005 ERROR org.apache.hadoop.hbase.regionserver.HRegionServer: ***** ABORTING region server hbasedn149.example.org,16020,1594375563853: Failed to open region hbase:meta,,1.1588230740 and can not recover *****java.lang.IllegalArgumentException: Invalid range: IntegrationTestBigLinkedList,,1594350463222.8f89e01a5245e79946e22d8a8ab4698b. > IntegrationTestBigLinkedList,\x10\x02J\xA1,1594349535271.be24dc276f686e6dcc7fb9d3f91c8387.
> {code}
> Seems basic case of wrong comparator. Below passes if I use the meta comparator
> {code:java}
> @Test
> public void testBinaryKeys() throws Exception {
> Set<Cell> set = new TreeSet<>(CellComparatorImpl.COMPARATOR);
> final byte [] fam = Bytes.toBytes("col");
> final byte [] qf = Bytes.toBytes("umn");
> final byte [] nb = new byte[0];
> Cell [] keys = {
> createByteBufferKeyValueFromKeyValue(
> new KeyValue(Bytes.toBytes("aaaaa,\u0000\u0000,2"), fam, qf, 2, nb)),
> createByteBufferKeyValueFromKeyValue(
> new KeyValue(Bytes.toBytes("aaaaa,\u0001,3"), fam, qf, 3, nb)),
> createByteBufferKeyValueFromKeyValue(
> new KeyValue(Bytes.toBytes("aaaaa,,1"), fam, qf, 1, nb)),
> createByteBufferKeyValueFromKeyValue(
> new KeyValue(Bytes.toBytes("aaaaa,\u1000,5"), fam, qf, 5, nb)),
> createByteBufferKeyValueFromKeyValue(
> new KeyValue(Bytes.toBytes("aaaaa,a,4"), fam, qf, 4, nb)),
> createByteBufferKeyValueFromKeyValue(
> new KeyValue(Bytes.toBytes("a,a,0"), fam, qf, 0, nb)),
> };
> // Add to set with bad comparator
> Collections.addAll(set, keys);
> // This will output the keys incorrectly.
> boolean assertion = false;
> int count = 0;
> try {
> for (Cell k: set) {
> assertTrue("count=" + count + ", " + k.toString(), count++ == k.getTimestamp());
> }
> } catch (AssertionError e) {
> // Expected
> assertion = true;
> }
> assertTrue(assertion);
> // Make set with good comparator
> set = new TreeSet<>(CellComparatorImpl.META_COMPARATOR);
> Collections.addAll(set, keys);
> count = 0;
> for (Cell k: set) {
> assertTrue("count=" + count + ", " + k.toString(), count++ == k.getTimestamp());
> }
> }{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)