You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jm...@apache.org on 2012/05/17 23:53:12 UTC
svn commit: r1339876 - in /hbase/trunk/src:
main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
Author: jmhsieh
Date: Thu May 17 21:53:12 2012
New Revision: 1339876
URL: http://svn.apache.org/viewvc?rev=1339876&view=rev
Log:
HBASE-6018 hbck fails with a RejectedExecutionException when >50 regions present
Modified:
hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.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=1339876&r1=1339875&r2=1339876&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 Thu May 17 21:53:12 2012
@@ -33,7 +33,7 @@ import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentSkipListMap;
-import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
@@ -222,9 +222,9 @@ public class HBaseFsck {
this.conf = conf;
int numThreads = conf.getInt("hbasefsck.numthreads", MAX_NUM_THREADS);
- executor = new ThreadPoolExecutor(1, numThreads,
+ executor = new ThreadPoolExecutor(numThreads, numThreads,
THREADS_KEEP_ALIVE_SECONDS, TimeUnit.SECONDS,
- new SynchronousQueue<Runnable>());
+ new LinkedBlockingQueue<Runnable>());
executor.allowCoreThreadTimeOut(true);
}
Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java?rev=1339876&r1=1339875&r2=1339876&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java Thu May 17 21:53:12 2012
@@ -361,6 +361,27 @@ public class TestHBaseFsck {
}
/**
+ * Test thread pooling in the case where there are more regions than threads
+ */
+ @Test
+ public void testHbckThreadpooling() throws Exception {
+ String table = "tableDupeStartKey";
+ try {
+ // Create table with 4 regions
+ setupTable(table);
+
+ // limit number of threads to 1.
+ Configuration newconf = new Configuration(conf);
+ newconf.setInt("hbasefsck.numthreads", 1);
+ assertNoErrors(doFsck(newconf, false));
+
+ // We should pass without triggering a RejectedExecutionException
+ } finally {
+ deleteTable(table);
+ }
+ }
+
+ /**
* This create and fixes a bad table with regions that have a duplicate
* start key
*/