HBASE-9992 [hbck] Refactor so that arbitrary -D cmdline options are included

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1544870 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael Stack 2013-11-23 19:38:59 +00:00
parent 5824f11f55
commit 129ce2523d
1 changed files with 17 additions and 23 deletions

View File

@ -164,7 +164,7 @@ import com.google.protobuf.ServiceException;
*/
@InterfaceAudience.Public
@InterfaceStability.Evolving
public class HBaseFsck extends Configured implements Tool {
public class HBaseFsck extends Configured {
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
@ -267,7 +267,8 @@ public class HBaseFsck extends Configured implements Tool {
super(conf);
errors = getErrorReporter(conf);
initialPoolNumThreads();
int numThreads = conf.getInt("hbasefsck.numthreads", MAX_NUM_THREADS);
executor = new ScheduledThreadPoolExecutor(numThreads, Threads.newDaemonThreadFactory("hbasefsck"));
}
/**
@ -298,18 +299,6 @@ public class HBaseFsck extends Configured implements Tool {
connection = admin.getConnection();
}
/**
* Initial numThreads for {@link #executor}
*/
private void initialPoolNumThreads() {
if (executor != null) {
executor.shutdown();
}
int numThreads = getConf().getInt("hbasefsck.numthreads", MAX_NUM_THREADS);
executor = new ScheduledThreadPoolExecutor(numThreads, Threads.newDaemonThreadFactory("hbasefsck"));
}
/**
* Get deployed regions according to the region servers.
*/
@ -3601,18 +3590,23 @@ public class HBaseFsck extends Configured implements Tool {
URI defaultFs = hbasedir.getFileSystem(conf).getUri();
FSUtils.setFsDefault(conf, new Path(defaultFs));
int ret = ToolRunner.run(new HBaseFsck(conf), args);
int ret = ToolRunner.run(new HBaseFsckTool(conf), args);
System.exit(ret);
}
@Override
public int run(String[] args) throws Exception {
// reset the numThreads due to user may set it via generic options
initialPoolNumThreads();
/**
* This is a Tool wrapper that gathers -Dxxx=yyy configuration settings from the command line.
*/
static class HBaseFsckTool extends Configured implements Tool {
HBaseFsckTool(Configuration conf) { super(conf); }
@Override
public int run(String[] args) throws Exception {
HBaseFsck hbck = new HBaseFsck(getConf());
hbck.exec(hbck.executor, args);
return hbck.getRetCode();
}
};
exec(executor, args);
return getRetCode();
}
public HBaseFsck exec(ExecutorService exec, String[] args) throws KeeperException, IOException,
ServiceException, InterruptedException {