From c850f4a1978edd5526742c98c999765465669e38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B0=8F=E4=BF=9D?= Date: Wed, 27 Feb 2019 19:30:02 +0800 Subject: [PATCH] HBASE-21540 when set property "hbase.systemtables.compacting.memstore.type" to "basic" or "eager" will cause an exception --- .../apache/hadoop/hbase/regionserver/HStore.java | 4 ++-- .../hadoop/hbase/regionserver/TestHStore.java | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java index 10bb030bab..c156aa247a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java @@ -347,8 +347,8 @@ public class HStore implements Store, HeapSize, StoreConfigInformation, Propagat // Check if in-memory-compaction configured. Note MemoryCompactionPolicy is an enum! MemoryCompactionPolicy inMemoryCompaction = null; if (this.getTableName().isSystemTable()) { - inMemoryCompaction = MemoryCompactionPolicy.valueOf( - conf.get("hbase.systemtables.compacting.memstore.type", "NONE")); + inMemoryCompaction = MemoryCompactionPolicy + .valueOf(conf.get("hbase.systemtables.compacting.memstore.type", "NONE").toUpperCase()); } else { inMemoryCompaction = family.getInMemoryCompaction(); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java index 21043491e0..02f7a6e5de 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java @@ -68,6 +68,7 @@ import org.apache.hadoop.hbase.HBaseTestingUtility; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.MemoryCompactionPolicy; +import org.apache.hadoop.hbase.NamespaceDescriptor; import org.apache.hadoop.hbase.PrivateCellUtil; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; @@ -1704,6 +1705,19 @@ public class TestHStore { assertEquals(8192L, sizeStore.getRegionSize(regionInfo2).getSize()); } + @Test + public void testInMemoryCompactionTypeWithLowerCase() throws IOException, InterruptedException { + Configuration conf = HBaseConfiguration.create(); + conf.set("hbase.systemtables.compacting.memstore.type", "eager"); + init(name.getMethodName(), conf, + TableDescriptorBuilder.newBuilder( + TableName.valueOf(NamespaceDescriptor.SYSTEM_NAMESPACE_NAME, "meta".getBytes())), + ColumnFamilyDescriptorBuilder.newBuilder(family) + .setInMemoryCompaction(MemoryCompactionPolicy.NONE).build()); + assertTrue(((MemStoreCompactor) ((CompactingMemStore) store.memstore).compactor).toString() + .startsWith("eager".toUpperCase())); + } + private HStoreFile mockStoreFileWithLength(long length) { HStoreFile sf = mock(HStoreFile.class); StoreFileReader sfr = mock(StoreFileReader.class); -- 2.17.1