diff --git a/CHANGES.txt b/CHANGES.txt index 450dd7a146d..428a573b1ab 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -267,6 +267,9 @@ Release 0.20.0 - Unreleased anymore HBASE-1658 Remove UI refresh -- its annoying HBASE-1659 merge tool doesnt take binary regions with \x escape format + HBASE-1663 Request compaction only once instead of every time 500ms each + time we cycle the hstore.getStorefilesCount() > + this.blockingStoreFilesNumber loop IMPROVEMENTS HBASE-1089 Add count of regions on filesystem to master UI; add percentage diff --git a/src/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java b/src/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java index dfb06f946ba..9b4c90d930c 100644 --- a/src/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java +++ b/src/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java @@ -229,13 +229,12 @@ class MemStoreFlusher extends Thread implements FlushRequester { finished = true; for (Store hstore: region.stores.values()) { if (hstore.getStorefilesCount() > this.blockingStoreFilesNumber) { - // always request a compaction - server.compactSplitThread.compactionRequested(region, getName()); // only log once if (!triggered) { LOG.info("Too many store files for region " + region + ": " + hstore.getStorefilesCount() + ", requesting compaction and " + "waiting"); + this.server.compactSplitThread.compactionRequested(region, getName()); triggered = true; } // pending compaction, not finished @@ -247,16 +246,17 @@ class MemStoreFlusher extends Thread implements FlushRequester { } } } - if(triggered && finished) { + if (triggered && finished) { LOG.info("Compaction has completed, we waited " + (count * 500) + "ms, " + "finishing flush of region " + region); break; } } - if(triggered && !finished) { + if (triggered && !finished) { LOG.warn("Tried to hold up flushing for compactions of region " + region + " but have waited longer than " + blockingWaitTime + "ms, continuing"); } + synchronized (regionsInQueue) { // See comment above for removeFromQueue on why we do not // take the region out of the set. If removeFromQueue is true, remove it