diff --git a/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java b/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java index 789db91..efdf9c7 100644 --- a/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java +++ b/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java @@ -95,7 +95,6 @@ import org.apache.hadoop.hbase.zookeeper.RootRegionTracker; import org.apache.hadoop.hbase.zookeeper.ZKTableReadOnly; import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher; import org.apache.hadoop.security.AccessControlException; -import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.ReflectionUtils; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner; @@ -251,8 +250,7 @@ public class HBaseFsck extends Configured implements Tool { super(conf); errors = getErrorReporter(conf); - int numThreads = conf.getInt("hbasefsck.numthreads", MAX_NUM_THREADS); - executor = new ScheduledThreadPoolExecutor(numThreads); + initialPoolNumThreads(); } /** @@ -284,6 +282,19 @@ public class HBaseFsck extends Configured implements Tool { } /** + * Initial numThreads for {@link #executor} + */ + private void initialPoolNumThreads() { + if (executor != null) { + executor.shutdown(); + executor = null; + } + + int numThreads = getConf().getInt("hbasefsck.numthreads", MAX_NUM_THREADS); + executor = new ScheduledThreadPoolExecutor(numThreads); + } + + /** * Get deployed regions according to the region servers. */ private void loadDeployedRegions() throws IOException, InterruptedException { @@ -3483,6 +3494,9 @@ public class HBaseFsck extends Configured implements Tool { @Override public int run(String[] args) throws Exception { + // reset the numThreads due to user may set it via generic options + initialPoolNumThreads(); + exec(executor, args); return getRetCode(); }