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 2010/04/15 00:34:38 UTC

svn commit: r934228 - in /hadoop/hbase/branches/0.20: CHANGES.txt src/java/org/apache/hadoop/hbase/HTableDescriptor.java src/java/org/apache/hadoop/hbase/regionserver/HRegion.java src/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java

Author: stack
Date: Wed Apr 14 22:34:38 2010
New Revision: 934228

URL: http://svn.apache.org/viewvc?rev=934228&view=rev
Log:
HBASE-2439 HBase can get stuck if updates to META are blocked

Modified:
    hadoop/hbase/branches/0.20/CHANGES.txt
    hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/HTableDescriptor.java
    hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
    hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java

Modified: hadoop/hbase/branches/0.20/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/CHANGES.txt?rev=934228&r1=934227&r2=934228&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/CHANGES.txt (original)
+++ hadoop/hbase/branches/0.20/CHANGES.txt Wed Apr 14 22:34:38 2010
@@ -80,6 +80,8 @@ Release 0.20.4 - Unreleased
    HBASE-2341  ZK settings for initLimit/syncLimit should not have been removed
                from hbase-default.xml
    HBASE-2383  Replace JSON-licensed json dependencies
+   HBASE-2439  HBase can get stuck if updates to META are blocked
+               (Kannan Muthukkaruppan via Stack)
 
   IMPROVEMENTS
    HBASE-2180  Bad read performance from synchronizing hfile.fddatainputstream

Modified: hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/HTableDescriptor.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/HTableDescriptor.java?rev=934228&r1=934227&r2=934228&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/HTableDescriptor.java (original)
+++ hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/HTableDescriptor.java Wed Apr 14 22:34:38 2010
@@ -112,7 +112,6 @@ ISerializable {
     for(HColumnDescriptor descriptor : families) {
       this.families.put(descriptor.getName(), descriptor);
     }
-    setMemStoreFlushSize(16 * 1024);
   }
 
   /**

Modified: hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=934228&r1=934227&r2=934228&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java Wed Apr 14 22:34:38 2010
@@ -1492,6 +1492,10 @@ public class HRegion implements HConstan
    * the notify.
    */
   private void checkResources() {
+
+    // If catalog region, do not impose resource constraints or block updates.
+    if (this.getRegionInfo().isMetaRegion()) return;
+
     boolean blocked = false;
     while (this.memstoreSize.get() > this.blockingMemStoreSize) {
       requestFlush();

Modified: hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java?rev=934228&r1=934227&r2=934228&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java (original)
+++ hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java Wed Apr 14 22:34:38 2010
@@ -228,7 +228,10 @@ class MemStoreFlusher extends Thread imp
     // queue if there's too many files.
     if (removeFromQueue) {
       checkStoreFileCount(region);
-    } else if (isTooManyStoreFiles(region)) {
+    } else if ((!region.getRegionInfo().isMetaRegion()) &&
+               isTooManyStoreFiles(region)) {
+      // Note: We don't impose blockingStoreFiles constraint on meta regions
+
       LOG.warn("Region " + region.getRegionNameAsString() + " has too many " +
           "store files, putting it back at the end of the flush queue.");
       server.compactSplitThread.compactionRequested(region, getName());