Author: jdcryans
Date: Fri Mar  6 18:26:00 2009
New Revision: 751023

URL: http://svn.apache.org/viewvc?rev=751023&view=rev
Log:
HBASE-1238  Under upload, region servers are unable
            to compact when loaded with hundreds of regions
This is a hack, compactions may run prematurely. 

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=751023&r1=751022&r2=751023&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Fri Mar  6 18:26:00 2009
@@ -35,6 +35,8 @@
                buffer each iteration-1185  wrong request/sec in the gui
                reporting wrong (Brian Beggs via Stack)
    HBASE-1245  hfile meta block handling bugs (Ryan Rawson via Stack)
+   HBASE-1238  Under upload, region servers are unable
+               to compact when loaded with hundreds of regions
 
   IMPROVEMENTS
    HBASE-1089  Add count of regions on filesystem to master UI; add percentage

Modified: 
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java?rev=751023&r1=751022&r2=751023&view=diff
==============================================================================
--- 
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java
 (original)
+++ 
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java
 Fri Mar  6 18:26:00 2009
@@ -21,6 +21,7 @@
 
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
+import java.util.ArrayList;
 import java.util.ConcurrentModificationException;
 import java.util.HashSet;
 import java.util.SortedMap;
@@ -268,6 +269,7 @@
   private synchronized void flushSomeRegions() {
     // keep flushing until we hit the low water mark
     long globalMemcacheSize = -1;
+    ArrayList<HRegion> regionsToCompact = new ArrayList();
     for (SortedMap<Long, HRegion> m =
         this.server.getCopyOfOnlineRegionsSortedBySize();
       (globalMemcacheSize = server.getGlobalMemcacheSize()) >=
@@ -292,6 +294,10 @@
         LOG.warn("Flush failed");
         break;
       }
+      regionsToCompact.add(biggestMemcacheRegion);
+    }
+    for (HRegion region : regionsToCompact) {
+      server.compactSplitThread.compactionRequested(region, getName());
     }
   }
 }


Reply via email to