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 2011/12/10 01:40:01 UTC

svn commit: r1212701 - /hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java

Author: stack
Date: Sat Dec 10 00:40:01 2011
New Revision: 1212701

URL: http://svn.apache.org/viewvc?rev=1212701&view=rev
Log:
HBASE-4859 Correctly PreWarm HBCK ThreadPool

Modified:
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java?rev=1212701&r1=1212700&r2=1212701&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java Sat Dec 10 00:40:01 2011
@@ -31,7 +31,7 @@ import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeMap;
 import java.util.TreeSet;
-import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -88,7 +88,6 @@ public class HBaseFsck {
   public static final long DEFAULT_TIME_LAG = 60000; // default value of 1 minute
   public static final long DEFAULT_SLEEP_BEFORE_RERUN = 10000;
 
-  private static final int MAX_NUM_THREADS = 50; // #threads to contact regions
   private static final long THREADS_KEEP_ALIVE_SECONDS = 60;
 
   private static final Log LOG = LogFactory.getLog(HBaseFsck.class.getName());
@@ -112,7 +111,6 @@ public class HBaseFsck {
   
   // Empty regioninfo qualifiers in .META.
   private Set<Result> emptyRegionInfoQualifiers = new HashSet<Result>();
-  private int numThreads = MAX_NUM_THREADS;
   private HBaseAdmin admin;
 
   ThreadPoolExecutor executor; // threads to retrieve data from regionservers
@@ -128,10 +126,11 @@ public class HBaseFsck {
       ZooKeeperConnectionException, IOException {
     this.conf = conf;
 
-    numThreads = conf.getInt("hbasefsck.numthreads", numThreads);
-    executor = new ThreadPoolExecutor(0, numThreads,
+    int numThreads = conf.getInt("hbasefsck.numthreads", Integer.MAX_VALUE);
+    executor = new ThreadPoolExecutor(1, numThreads,
         THREADS_KEEP_ALIVE_SECONDS, TimeUnit.SECONDS,
-        new LinkedBlockingQueue<Runnable>());
+        new SynchronousQueue<Runnable>());
+    executor.allowCoreThreadTimeOut(true);
   }
 
   public void connect() throws MasterNotRunningException,