HBASE-18994 Decide if META/System tables should use Compacting Memstore or

Default Memstore (Ram)
This commit is contained in:
Ramkrishna 2017-10-26 10:44:59 +05:30
parent 5dadfdaa58
commit 015db0a7aa
1 changed files with 21 additions and 15 deletions

View File

@ -264,24 +264,30 @@ public class HStore implements Store, HeapSize, StoreConfigInformation, Propagat
// Why not just pass a HColumnDescriptor in here altogether? Even if have // Why not just pass a HColumnDescriptor in here altogether? Even if have
// to clone it? // to clone it?
scanInfo = new ScanInfo(conf, family, ttl, timeToPurgeDeletes, this.comparator); scanInfo = new ScanInfo(conf, family, ttl, timeToPurgeDeletes, this.comparator);
MemoryCompactionPolicy inMemoryCompaction = family.getInMemoryCompaction(); MemoryCompactionPolicy inMemoryCompaction = null;
if(inMemoryCompaction == null) { if (this.getTableName().isSystemTable()) {
inMemoryCompaction = MemoryCompactionPolicy.valueOf( inMemoryCompaction = MemoryCompactionPolicy
conf.get(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY, .valueOf(conf.get("hbase.systemtables.compacting.memstore.type", "NONE"));
CompactingMemStore.COMPACTING_MEMSTORE_TYPE_DEFAULT)); } else {
inMemoryCompaction = family.getInMemoryCompaction();
}
if (inMemoryCompaction == null) {
inMemoryCompaction =
MemoryCompactionPolicy.valueOf(conf.get(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY,
CompactingMemStore.COMPACTING_MEMSTORE_TYPE_DEFAULT));
} }
String className; String className;
switch (inMemoryCompaction) { switch (inMemoryCompaction) {
case BASIC : case BASIC:
case EAGER : case EAGER:
Class<? extends CompactingMemStore> clz = conf.getClass(MEMSTORE_CLASS_NAME, Class<? extends CompactingMemStore> clz =
CompactingMemStore.class, CompactingMemStore.class); conf.getClass(MEMSTORE_CLASS_NAME, CompactingMemStore.class, CompactingMemStore.class);
className = clz.getName(); className = clz.getName();
this.memstore = ReflectionUtils.newInstance(clz, new Object[] { conf, this.comparator, this, this.memstore = ReflectionUtils.newInstance(clz, new Object[] { conf, this.comparator, this,
this.getHRegion().getRegionServicesForStores(), inMemoryCompaction}); this.getHRegion().getRegionServicesForStores(), inMemoryCompaction });
break; break;
case NONE : case NONE:
default: default:
className = DefaultMemStore.class.getName(); className = DefaultMemStore.class.getName();
this.memstore = ReflectionUtils.newInstance(DefaultMemStore.class, this.memstore = ReflectionUtils.newInstance(DefaultMemStore.class,
new Object[] { conf, this.comparator }); new Object[] { conf, this.comparator });