You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2013/04/01 18:53:57 UTC

svn commit: r1463204 - in /hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver: MemStoreFlusher.java Store.java

Author: tedyu
Date: Mon Apr  1 16:53:57 2013
New Revision: 1463204

URL: http://svn.apache.org/r1463204
Log:
HBASE-8174 Backport HBASE-8161(setting blocking file count on table level doesn't work) to 0.94 (clockfly)


Modified:
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java?rev=1463204&r1=1463203&r2=1463204&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java Mon Apr  1 16:53:57 2013
@@ -82,7 +82,7 @@ class MemStoreFlusher extends HasThread 
     "hbase.regionserver.global.memstore.upperLimit";
   private static final String LOWER_KEY =
     "hbase.regionserver.global.memstore.lowerLimit";
-  private long blockingStoreFilesNumber;
+  
   private long blockingWaitTime;
   private final Counter updatesBlockedMsHighWater = new Counter();
 
@@ -106,12 +106,7 @@ class MemStoreFlusher extends HasThread 
         "because supplied " + LOWER_KEY + " was > " + UPPER_KEY);
     }
     this.globalMemStoreLimitLowMark = lower;
-    this.blockingStoreFilesNumber =
-      conf.getInt("hbase.hstore.blockingStoreFiles", 7);
-    if (this.blockingStoreFilesNumber == -1) {
-      this.blockingStoreFilesNumber = 1 +
-        conf.getInt("hbase.hstore.compactionThreshold", 3);
-    }
+    
     this.blockingWaitTime = conf.getInt("hbase.hstore.blockingWaitTime",
       90000);
     LOG.info("globalMemStoreLimit=" +
@@ -444,7 +439,7 @@ class MemStoreFlusher extends HasThread 
 
   private boolean isTooManyStoreFiles(HRegion region) {
     for (Store hstore: region.stores.values()) {
-      if (hstore.getStorefilesCount() > this.blockingStoreFilesNumber) {
+      if (hstore.hasTooManyStoreFiles()) {
         return true;
       }
     }

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java?rev=1463204&r1=1463203&r2=1463204&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java Mon Apr  1 16:53:57 2013
@@ -109,6 +109,9 @@ import com.google.common.collect.Lists;
  */
 public class Store extends SchemaConfigured implements HeapSize {
   static final Log LOG = LogFactory.getLog(Store.class);
+  
+  public static final String BLOCKING_STOREFILES_KEY = "hbase.hstore.blockingStoreFiles";
+  public static final int DEFAULT_BLOCKING_STOREFILE_COUNT = 7;
 
   protected final MemStore memstore;
   // This stores directory in the filesystem.
@@ -134,6 +137,8 @@ public class Store extends SchemaConfigu
   private final Object flushLock = new Object();
   final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
   private final boolean verifyBulkLoads;
+  
+  private long blockingFileCount;
 
   /* The default priority for user-specified compaction requests.
    * The user gets top priority unless we have blocking compactions. (Pri <= 0)
@@ -237,7 +242,10 @@ public class Store extends SchemaConfigu
       = conf.getLong("hbase.hstore.compaction.max.size", Long.MAX_VALUE);
 
     this.verifyBulkLoads = conf.getBoolean("hbase.hstore.bulkload.verify", false);
-
+    
+    this.blockingFileCount =
+                conf.getInt(BLOCKING_STOREFILES_KEY, DEFAULT_BLOCKING_STOREFILE_COUNT);
+    
     if (Store.closeCheckInterval == 0) {
       Store.closeCheckInterval = conf.getInt(
           "hbase.hstore.close.check.interval", 10*1000*1000 /* 10 MB */);
@@ -2271,7 +2279,7 @@ public class Store extends SchemaConfigu
 
   public static final long FIXED_OVERHEAD =
       ClassSize.align(SchemaConfigured.SCHEMA_CONFIGURED_UNALIGNED_HEAP_SIZE +
-          + (17 * ClassSize.REFERENCE) + (6 * Bytes.SIZEOF_LONG)
+          + (17 * ClassSize.REFERENCE) + (7 * Bytes.SIZEOF_LONG)
           + (5 * Bytes.SIZEOF_INT) + Bytes.SIZEOF_BOOLEAN);
 
   public static final long DEEP_OVERHEAD = ClassSize.align(FIXED_OVERHEAD
@@ -2292,6 +2300,10 @@ public class Store extends SchemaConfigu
   public ScanInfo getScanInfo() {
     return scanInfo;
   }
+  
+  public boolean hasTooManyStoreFiles() {
+    return getStorefilesCount() > this.blockingFileCount;
+  }
 
   /**
    * Immutable information for scans over a store.