You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2013/05/21 07:37:48 UTC

svn commit: r1484663 - in /hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver: HRegion.java HRegionServer.java

Author: larsh
Date: Tue May 21 05:37:48 2013
New Revision: 1484663

URL: http://svn.apache.org/r1484663
Log:
HBASE-8282 User triggered flushes does not allow compaction to get triggered even if compaction criteria is met (Ram)

Modified:
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=1484663&r1=1484662&r2=1484663&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java Tue May 21 05:37:48 2013
@@ -1405,7 +1405,7 @@ public class HRegion implements HeapSize
    * <p>This method may block for some time, so it should not be called from a
    * time-sensitive thread.
    *
-   * @return true if cache was flushed
+   * @return true if the region needs compaction
    *
    * @throws IOException general io exceptions
    * @throws DroppedSnapshotException Thrown when replay of hlog is required

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1484663&r1=1484662&r2=1484663&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Tue May 21 05:37:48 2013
@@ -2449,7 +2449,10 @@ public class HRegionServer implements HR
       throw new IllegalArgumentException("No region : " + new String(regionName)
       + " available");
     }
-    region.flushcache();
+    boolean needsCompaction = region.flushcache();
+    if (needsCompaction) {
+      this.compactSplitThread.requestCompaction(region, "Compaction through user triggered flush");
+    }
   }
 
  /**
@@ -2462,7 +2465,13 @@ public class HRegionServer implements HR
        throw new IllegalArgumentException("No region : " + new String(regionName)
        + " available");
      }
-     if (region.getLastFlushTime() < ifOlderThanTS) region.flushcache();
+     if (region.getLastFlushTime() < ifOlderThanTS) {
+      boolean needsCompaction = region.flushcache();
+      if (needsCompaction) {
+        this.compactSplitThread
+            .requestCompaction(region, "Compaction through user triggered flush");
+      }
+    }
    }
 
   /**
@@ -3247,7 +3256,10 @@ public class HRegionServer implements HR
     checkOpen();
     LOG.info("Flushing " + regionInfo.getRegionNameAsString());
     HRegion region = getRegion(regionInfo.getRegionName());
-    region.flushcache();
+    boolean needsCompaction = region.flushcache();
+    if (needsCompaction) {
+      this.compactSplitThread.requestCompaction(region, "Compaction through user triggered flush");
+    }
   }
 
   @Override