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/18 16:49:55 UTC

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

Author: stack
Date: Tue Nov 18 07:49:54 2008
New Revision: 718636

URL: http://svn.apache.org/viewvc?rev=718636&view=rev
Log:
HBASE-990   NoSuchElementException in flushSomeRegions; took two attempts

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=718636&r1=718635&r2=718636&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Tue Nov 18 07:49:54 2008
@@ -69,7 +69,7 @@
    HBASE-951   Either shut down master or let it finish cleanup
    HBASE-964, HBASE-678 provide for safe-mode without locking up HBase "waiting
                for root region"
-   HBASE-990   NoSuchElementException in flushSomeRegions
+   HBASE-990   NoSuchElementException in flushSomeRegions; took two attempts.
    HBASE-602   HBase Crash when network card has a IPv6 address
    HBASE-996   Migration script to up the versions in catalog tables
    HBASE-991   Update the mapred package document examples so they work with

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=718636&r1=718635&r2=718636&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 Tue Nov 18 07:49:54 2008
@@ -219,15 +219,17 @@
    * to this regionserver are blocked.
    */
   private synchronized void flushSomeRegions() {
-    SortedMap<Long, HRegion> m =
-      this.server.getCopyOfOnlineRegionsSortedBySize();
-    if (m.size() <= 0) {
-      LOG.info("No online regions to flush though we've been asked flush some.");
-      return;
-    }
     // keep flushing until we hit the low water mark
-    while (server.getGlobalMemcacheSize() >= globalMemcacheLimitLowMark) {
+    for (SortedMap<Long, HRegion> m =
+        this.server.getCopyOfOnlineRegionsSortedBySize();
+      server.getGlobalMemcacheSize() >= 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() +
+            ", globalMemcacheLimitLowMark=" + this.globalMemcacheLimitLowMark);
+        break;
+      }
       HRegion biggestMemcacheRegion = m.remove(m.firstKey());
       if (!flushRegion(biggestMemcacheRegion, true)) {
         // Something bad happened - give up.