.../hadoop/hbase/regionserver/CompactingMemStore.java | 2 ++ .../java/org/apache/hadoop/hbase/regionserver/HStore.java | 14 +++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactingMemStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactingMemStore.java index f02feb5..c0d14ad 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactingMemStore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactingMemStore.java @@ -54,6 +54,8 @@ import org.apache.hadoop.hbase.wal.WAL; public class CompactingMemStore extends AbstractMemStore { // The external setting of the compacting MemStore behaviour + public static final String COMPACTING_MEMSTORE_ENABLED = "hbase.hregion.compacting.memstore"; + public static final boolean DEFAULT_COMPACTING_MEMSTORE_ENABLED = false; public static final String COMPACTING_MEMSTORE_TYPE_KEY = "hbase.hregion.compacting.memstore.type"; public static final String COMPACTING_MEMSTORE_TYPE_DEFAULT = 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 c56abaa..21b2118 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 @@ -242,10 +242,18 @@ public class HStore implements Store { scanInfo = new ScanInfo(conf, family, ttl, timeToPurgeDeletes, this.comparator); String className = conf.get(MEMSTORE_CLASS_NAME, DefaultMemStore.class.getName()); HColumnDescriptor.MemoryCompaction inMemoryCompaction = family.getInMemoryCompaction(); - if(inMemoryCompaction == null) { - inMemoryCompaction = HColumnDescriptor.MemoryCompaction.valueOf(conf.get - (CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY, + if (inMemoryCompaction == null) { + // if not set at family level check if at conf level compacting memstore is enabled. + if (conf.getBoolean(CompactingMemStore.COMPACTING_MEMSTORE_ENABLED, + CompactingMemStore.DEFAULT_COMPACTING_MEMSTORE_ENABLED)) { + inMemoryCompaction = HColumnDescriptor.MemoryCompaction + .valueOf(conf.get(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY, CompactingMemStore.COMPACTING_MEMSTORE_TYPE_DEFAULT)); + } else { + // Compacting memstore is not enabled globally also + // if there is no in memory compaction set - then we go with DefaultMemstore + inMemoryCompaction = HColumnDescriptor.MemoryCompaction.NONE; + } } switch (inMemoryCompaction) { case BASIC :