You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2008/11/24 23:58:36 UTC

svn commit: r720325 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java

Author: stack
Date: Mon Nov 24 14:58:36 2008
New Revision: 720325

URL: http://svn.apache.org/viewvc?rev=720325&view=rev
Log:
HBASE-1023 Check global flusher

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=720325&r1=720324&r2=720325&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Mon Nov 24 14:58:36 2008
@@ -82,6 +82,7 @@
    HBASE-1009  Master stuck in loop wanting to assign but regions are closing
    HBASE-1016  Fix example in javadoc overvie
    HBASE-1021  hbase metrics FileContext not working
+   HBASE-1023  Check global flusher
       
   IMPROVEMENTS
    HBASE-901   Add a limit to key length, check key and value length on client side

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=720325&r1=720324&r2=720325&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 Mon Nov 24 14:58:36 2008
@@ -220,17 +220,23 @@
    */
   private synchronized void flushSomeRegions() {
     // keep flushing until we hit the low water mark
+    long globalMemcacheSize = -1;
     for (SortedMap<Long, HRegion> m =
         this.server.getCopyOfOnlineRegionsSortedBySize();
-      server.getGlobalMemcacheSize() >= globalMemcacheLimitLowMark;) {
+      (globalMemcacheSize = server.getGlobalMemcacheSize()) >=
+        this.globalMemcacheLimitLowMark;) {
       // flush the region with the biggest memcache
       if (m.size() <= 0) {
         LOG.info("No online regions to flush though we've been asked flush " +
-            "some; globalMemcacheSize=" + this.server.getGlobalMemcacheSize() +
+            "some; globalMemcacheSize=" + globalMemcacheSize +
             ", globalMemcacheLimitLowMark=" + this.globalMemcacheLimitLowMark);
         break;
       }
       HRegion biggestMemcacheRegion = m.remove(m.firstKey());
+      LOG.info("Forced flushing of " +  biggestMemcacheRegion.toString() +
+        " because global memcache limit of " + this.globalMemcacheLimit +
+        " exceeded; currenly " + globalMemcacheSize + " and flushing till " +
+        this.globalMemcacheLimitLowMark);
       if (!flushRegion(biggestMemcacheRegion, true)) {
         // Something bad happened - give up.
         break;