HBASE-19418 configurable range of delay in PeriodicMemstoreFlusher
Signed-off-by: Andrew Purtell <apurtell@apache.org>
This commit is contained in:
parent
704f8b81bb
commit
668a179882
|
@ -1757,11 +1757,16 @@ public class HRegionServer extends HasThread implements
|
||||||
|
|
||||||
static class PeriodicMemStoreFlusher extends ScheduledChore {
|
static class PeriodicMemStoreFlusher extends ScheduledChore {
|
||||||
final HRegionServer server;
|
final HRegionServer server;
|
||||||
final static int RANGE_OF_DELAY = 5 * 60 * 1000; // 5 min in milliseconds
|
final static int RANGE_OF_DELAY = 5 * 60; // 5 min in seconds
|
||||||
final static int MIN_DELAY_TIME = 0; // millisec
|
final static int MIN_DELAY_TIME = 0; // millisec
|
||||||
|
|
||||||
|
final int rangeOfDelay;
|
||||||
public PeriodicMemStoreFlusher(int cacheFlushInterval, final HRegionServer server) {
|
public PeriodicMemStoreFlusher(int cacheFlushInterval, final HRegionServer server) {
|
||||||
super("MemstoreFlusherChore", server, cacheFlushInterval);
|
super("MemstoreFlusherChore", server, cacheFlushInterval);
|
||||||
this.server = server;
|
this.server = server;
|
||||||
|
|
||||||
|
this.rangeOfDelay = this.server.conf.getInt("hbase.regionserver.periodicmemstoreflusher.rangeofdelayseconds",
|
||||||
|
RANGE_OF_DELAY)*1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1772,7 +1777,7 @@ public class HRegionServer extends HasThread implements
|
||||||
if (r.shouldFlush(whyFlush)) {
|
if (r.shouldFlush(whyFlush)) {
|
||||||
FlushRequester requester = server.getFlushRequester();
|
FlushRequester requester = server.getFlushRequester();
|
||||||
if (requester != null) {
|
if (requester != null) {
|
||||||
long randomDelay = (long) RandomUtils.nextInt(0, RANGE_OF_DELAY) + MIN_DELAY_TIME;
|
long randomDelay = (long) RandomUtils.nextInt(0, rangeOfDelay) + MIN_DELAY_TIME;
|
||||||
//Throttle the flushes by putting a delay. If we don't throttle, and there
|
//Throttle the flushes by putting a delay. If we don't throttle, and there
|
||||||
//is a balanced write-load on the regions in a table, we might end up
|
//is a balanced write-load on the regions in a table, we might end up
|
||||||
//overwhelming the filesystem with too many flushes at once.
|
//overwhelming the filesystem with too many flushes at once.
|
||||||
|
|
|
@ -112,6 +112,7 @@ public class TestRegionServerMetrics {
|
||||||
// testMobMetrics creates few hfiles and manages compaction manually.
|
// testMobMetrics creates few hfiles and manages compaction manually.
|
||||||
conf.setInt("hbase.hstore.compactionThreshold", 100);
|
conf.setInt("hbase.hstore.compactionThreshold", 100);
|
||||||
conf.setInt("hbase.hstore.compaction.max", 100);
|
conf.setInt("hbase.hstore.compaction.max", 100);
|
||||||
|
conf.setInt("hbase.regionserver.periodicmemstoreflusher.rangeofdelayseconds", 4*60);
|
||||||
conf.setInt(HConstants.REGIONSERVER_INFO_PORT, -1);
|
conf.setInt(HConstants.REGIONSERVER_INFO_PORT, -1);
|
||||||
|
|
||||||
TEST_UTIL.startMiniCluster();
|
TEST_UTIL.startMiniCluster();
|
||||||
|
|
Loading…
Reference in New Issue