From 658a0d6e1d14b3e87a8db280da6281c690969e10 Mon Sep 17 00:00:00 2001 From: ramie-raufdeen Date: Mon, 10 Sep 2018 18:39:53 -0700 Subject: [PATCH] HBASE-19418 configurable range of delay in PeriodicMemstoreFlusher --- .../java/org/apache/hadoop/hbase/regionserver/HRegionServer.java | 9 +++++++-- .../hadoop/hbase/regionserver/TestRegionServerMetrics.java | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 02815c532a..1be403823e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -1751,11 +1751,16 @@ public class HRegionServer extends HasThread implements static class PeriodicMemStoreFlusher extends ScheduledChore { 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 int rangeOfDelay; public PeriodicMemStoreFlusher(int cacheFlushInterval, final HRegionServer server) { super("MemstoreFlusherChore", server, cacheFlushInterval); this.server = server; + + this.rangeOfDelay = this.server.conf.getInt("hbase.regionserver.periodicmemstoreflusher.rangeofdelayseconds", + RANGE_OF_DELAY)*1000; } @Override @@ -1766,7 +1771,7 @@ public class HRegionServer extends HasThread implements if (r.shouldFlush(whyFlush)) { FlushRequester requester = server.getFlushRequester(); 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; LOG.info(getName() + " requesting flush of " + r.getRegionInfo().getRegionNameAsString() + " because " + whyFlush.toString() + diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java index 5754edbc9a..79ee15dba6 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java @@ -112,6 +112,7 @@ public class TestRegionServerMetrics { // testMobMetrics creates few hfiles and manages compaction manually. conf.setInt("hbase.hstore.compactionThreshold", 100); conf.setInt("hbase.hstore.compaction.max", 100); + conf.setInt("hbase.regionserver.periodicmemstoreflusher.rangeofdelayseconds", 4*60); conf.setInt(HConstants.REGIONSERVER_INFO_PORT, -1); TEST_UTIL.startMiniCluster(); -- 2.15.2 (Apple Git-101.1)