HBASE-17071 Do not initialize MemstoreChunkPool when use mslab option is turned off.
This commit is contained in:
parent
f9c6b66b95
commit
fa838b020d
|
@ -202,6 +202,11 @@ public class MemStoreChunkPool implements HeapMemoryTuneObserver {
|
||||||
synchronized (MemStoreChunkPool.class) {
|
synchronized (MemStoreChunkPool.class) {
|
||||||
if (chunkPoolDisabled) return null;
|
if (chunkPoolDisabled) return null;
|
||||||
if (GLOBAL_INSTANCE != null) return GLOBAL_INSTANCE;
|
if (GLOBAL_INSTANCE != null) return GLOBAL_INSTANCE;
|
||||||
|
// When MSLAB is turned OFF no need to init chunk pool at all.
|
||||||
|
if (!conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {
|
||||||
|
chunkPoolDisabled = true;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
float poolSizePercentage = conf.getFloat(CHUNK_POOL_MAXSIZE_KEY, POOL_MAX_SIZE_DEFAULT);
|
float poolSizePercentage = conf.getFloat(CHUNK_POOL_MAXSIZE_KEY, POOL_MAX_SIZE_DEFAULT);
|
||||||
if (poolSizePercentage <= 0) {
|
if (poolSizePercentage <= 0) {
|
||||||
chunkPoolDisabled = true;
|
chunkPoolDisabled = true;
|
||||||
|
|
|
@ -44,6 +44,9 @@ import org.apache.hadoop.hbase.classification.InterfaceAudience;
|
||||||
@InterfaceAudience.Private
|
@InterfaceAudience.Private
|
||||||
public interface MemStoreLAB {
|
public interface MemStoreLAB {
|
||||||
|
|
||||||
|
String USEMSLAB_KEY = "hbase.hregion.memstore.mslab.enabled";
|
||||||
|
boolean USEMSLAB_DEFAULT = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocates slice in this LAB and copy the passed Cell into this area. Returns new Cell instance
|
* Allocates slice in this LAB and copy the passed Cell into this area. Returns new Cell instance
|
||||||
* over the copied the data. When this MemStoreLAB can not copy this Cell, it returns null.
|
* over the copied the data. When this MemStoreLAB can not copy this Cell, it returns null.
|
||||||
|
@ -64,4 +67,5 @@ public interface MemStoreLAB {
|
||||||
* Called when closing a scanner on the data of this MemStoreLAB
|
* Called when closing a scanner on the data of this MemStoreLAB
|
||||||
*/
|
*/
|
||||||
void decScannerCount();
|
void decScannerCount();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,8 +35,6 @@ import java.util.List;
|
||||||
@InterfaceAudience.Private
|
@InterfaceAudience.Private
|
||||||
public final class SegmentFactory {
|
public final class SegmentFactory {
|
||||||
|
|
||||||
static final String USEMSLAB_KEY = "hbase.hregion.memstore.mslab.enabled";
|
|
||||||
static final boolean USEMSLAB_DEFAULT = true;
|
|
||||||
static final String MSLAB_CLASS_NAME = "hbase.regionserver.mslab.class";
|
static final String MSLAB_CLASS_NAME = "hbase.regionserver.mslab.class";
|
||||||
|
|
||||||
private SegmentFactory() {}
|
private SegmentFactory() {}
|
||||||
|
@ -107,7 +105,7 @@ public final class SegmentFactory {
|
||||||
|
|
||||||
private MemStoreLAB getMemStoreLAB(Configuration conf) {
|
private MemStoreLAB getMemStoreLAB(Configuration conf) {
|
||||||
MemStoreLAB memStoreLAB = null;
|
MemStoreLAB memStoreLAB = null;
|
||||||
if (conf.getBoolean(USEMSLAB_KEY, USEMSLAB_DEFAULT)) {
|
if (conf.getBoolean(MemStoreLAB.USEMSLAB_KEY, MemStoreLAB.USEMSLAB_DEFAULT)) {
|
||||||
String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.class.getName());
|
String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.class.getName());
|
||||||
memStoreLAB = ReflectionUtils.instantiateWithCustomCtor(className,
|
memStoreLAB = ReflectionUtils.instantiateWithCustomCtor(className,
|
||||||
new Class[] { Configuration.class }, new Object[] { conf });
|
new Class[] { Configuration.class }, new Object[] { conf });
|
||||||
|
|
|
@ -72,7 +72,7 @@ public class TestCellFlatSet extends TestCase {
|
||||||
ascCbOnHeap = new CellArrayMap(CellComparator.COMPARATOR,ascCells,0,NUM_OF_CELLS,false);
|
ascCbOnHeap = new CellArrayMap(CellComparator.COMPARATOR,ascCells,0,NUM_OF_CELLS,false);
|
||||||
descCells = new Cell[] {kv4,kv3,kv2,kv1};
|
descCells = new Cell[] {kv4,kv3,kv2,kv1};
|
||||||
descCbOnHeap = new CellArrayMap(CellComparator.COMPARATOR,descCells,0,NUM_OF_CELLS,true);
|
descCbOnHeap = new CellArrayMap(CellComparator.COMPARATOR,descCells,0,NUM_OF_CELLS,true);
|
||||||
CONF.setBoolean(SegmentFactory.USEMSLAB_KEY, true);
|
CONF.setBoolean(MemStoreLAB.USEMSLAB_KEY, true);
|
||||||
CONF.setFloat(MemStoreChunkPool.CHUNK_POOL_MAXSIZE_KEY, 0.2f);
|
CONF.setFloat(MemStoreChunkPool.CHUNK_POOL_MAXSIZE_KEY, 0.2f);
|
||||||
MemStoreChunkPool.chunkPoolDisabled = false;
|
MemStoreChunkPool.chunkPoolDisabled = false;
|
||||||
mslab = new HeapMemStoreLAB(CONF);
|
mslab = new HeapMemStoreLAB(CONF);
|
||||||
|
|
|
@ -86,7 +86,7 @@ public class TestCompactingMemStore extends TestDefaultMemStore {
|
||||||
protected void compactingSetUp() throws Exception {
|
protected void compactingSetUp() throws Exception {
|
||||||
super.internalSetUp();
|
super.internalSetUp();
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.setBoolean(SegmentFactory.USEMSLAB_KEY, true);
|
conf.setBoolean(MemStoreLAB.USEMSLAB_KEY, true);
|
||||||
conf.setFloat(MemStoreChunkPool.CHUNK_POOL_MAXSIZE_KEY, 0.2f);
|
conf.setFloat(MemStoreChunkPool.CHUNK_POOL_MAXSIZE_KEY, 0.2f);
|
||||||
conf.setInt(HRegion.MEMSTORE_PERIODIC_FLUSH_INTERVAL, 1000);
|
conf.setInt(HRegion.MEMSTORE_PERIODIC_FLUSH_INTERVAL, 1000);
|
||||||
HBaseTestingUtility hbaseUtility = HBaseTestingUtility.createLocalHTU(conf);
|
HBaseTestingUtility hbaseUtility = HBaseTestingUtility.createLocalHTU(conf);
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class TestMemStoreChunkPool {
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void setUpBeforeClass() throws Exception {
|
public static void setUpBeforeClass() throws Exception {
|
||||||
conf.setBoolean(SegmentFactory.USEMSLAB_KEY, true);
|
conf.setBoolean(MemStoreLAB.USEMSLAB_KEY, true);
|
||||||
conf.setFloat(MemStoreChunkPool.CHUNK_POOL_MAXSIZE_KEY, 0.2f);
|
conf.setFloat(MemStoreChunkPool.CHUNK_POOL_MAXSIZE_KEY, 0.2f);
|
||||||
chunkPoolDisabledBeforeTest = MemStoreChunkPool.chunkPoolDisabled;
|
chunkPoolDisabledBeforeTest = MemStoreChunkPool.chunkPoolDisabled;
|
||||||
MemStoreChunkPool.chunkPoolDisabled = false;
|
MemStoreChunkPool.chunkPoolDisabled = false;
|
||||||
|
|
Loading…
Reference in New Issue