package org.apache.mesos.hbase.scheduler;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.mesos.hbase.config.ConfigServer;
/**
* Main entry point for the Scheduler.
*/
public class Main {
private final Log log = LogFactory.getLog(Main.class);
public static void main(String[] args) {
new Main().start();
}
void start() {
Injector injector = Guice.createInjector(new HBaseSchedulerModule());
getSchedulerThread(injector).start();
injector.getInstance(ConfigServer.class);
}
private Thread getSchedulerThread(Injector injector) {
Thread scheduler = new Thread(injector.getInstance(HBaseScheduler.class));
scheduler.setName("HBaseScheduler");
scheduler.setUncaughtExceptionHandler(getUncaughtExceptionHandler());
return scheduler;
}
private Thread.UncaughtExceptionHandler getUncaughtExceptionHandler() {
return new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
log.error("Scheduler exiting due to uncaught exception", e);
System.exit(2);
}
};
}
}