@Override
public void run()
{
verifyJvmRequirements();
Logger log = Logger.get(PrestoServer.class);
ImmutableList.Builder<Module> modules = ImmutableList.builder();
modules.add(
new NodeModule(),
new DiscoveryModule(),
new HttpServerModule(),
new JsonModule(),
new JaxrsModule(),
new MBeanModule(),
new JmxModule(),
new JmxHttpModule(),
new LogJmxModule(),
new TraceTokenModule(),
new JsonEventModule(),
new HttpEventModule(),
new EmbeddedDiscoveryModule(),
new ServerMainModule(sqlParserOptions));
modules.addAll(getAdditionalModules());
Bootstrap app = new Bootstrap(modules.build());
try {
Injector injector = app.strictConfig().initialize();
if (!FloatingDecimal.isPatchInstalled()) {
log.warn("FloatingDecimal patch not installed. Parallelism will be diminished when parsing/formatting doubles");
}
injector.getInstance(PluginManager.class).loadPlugins();
injector.getInstance(CatalogManager.class).loadCatalogs();
// TODO: remove this huge hack
updateDatasources(
injector.getInstance(Announcer.class),
injector.getInstance(Metadata.class),
injector.getInstance(ServerConfig.class),
injector.getInstance(NodeSchedulerConfig.class));
injector.getInstance(Announcer.class).start();
log.info("======== SERVER STARTED ========");
installCodeCacheGcTrigger();
}
catch (Throwable e) {
log.error(e);
System.exit(1);
}
}