use of io.prestosql.discovery.HetuDiscoveryModule in project hetu-core by openlookeng.
the class PrestoServer method run.
@Override
public void run() {
verifyJvmRequirements();
verifySystemTimeIsReasonable();
Logger log = Logger.get(PrestoServer.class);
ImmutableList.Builder<Module> modules = ImmutableList.builder();
modules.add(new NodeModule(), Modules.override(new DiscoveryModule()).with(new HetuDiscoveryModule()), Modules.override(new HttpServerModule()).with(new HetuHttpServerModule()), new JsonModule(), new SmileModule(), new JaxrsModule(), new MBeanModule(), new PrefixObjectNameGeneratorModule("io.prestosql"), new HetuJmxModule(), new JmxHttpModule(), new LogJmxModule(), new TraceTokenModule(), new JsonEventModule(), new HttpEventModule(), new ServerSecurityModule(), new AccessControlModule(), new PasswordSecurityModule(), new EventListenerModule(), new ServerMainModule(sqlParserOptions), new NodeStateChangeModule(), new WarningCollectorModule());
modules.addAll(getAdditionalModules());
Bootstrap app = new Bootstrap(modules.build());
try {
Injector injector = app.strictConfig().initialize();
logLocation(log, "Working directory", Paths.get("."));
logLocation(log, "Etc directory", Paths.get("etc"));
injector.getInstance(PluginManager.class).loadPlugins();
FileSystemClientManager fileSystemClientManager = injector.getInstance(FileSystemClientManager.class);
fileSystemClientManager.loadFactoryConfigs();
injector.getInstance(SeedStoreManager.class).loadSeedStore();
if (injector.getInstance(SeedStoreManager.class).isSeedStoreOnYarnEnabled()) {
addSeedOnYarnInformation(injector.getInstance(ServerConfig.class), injector.getInstance(SeedStoreManager.class), (HetuHttpServerInfo) injector.getInstance(HttpServerInfo.class));
}
launchEmbeddedStateStore(injector.getInstance(HetuConfig.class), injector.getInstance(StateStoreLauncher.class));
injector.getInstance(StateStoreProvider.class).loadStateStore();
// relies on state-store
injector.getInstance(HetuMetaStoreManager.class).loadHetuMetastore(fileSystemClientManager);
// relies on metastore
injector.getInstance(HeuristicIndexerManager.class).buildIndexClient();
injector.getInstance(StaticFunctionNamespaceStore.class).loadFunctionNamespaceManagers();
injector.getInstance(StaticCatalogStore.class).loadCatalogs();
injector.getInstance(DynamicCatalogStore.class).loadCatalogStores(fileSystemClientManager);
injector.getInstance(DynamicCatalogScanner.class).start();
injector.getInstance(SessionPropertyDefaults.class).loadConfigurationManager();
injector.getInstance(ResourceGroupManager.class).loadConfigurationManager();
injector.getInstance(AccessControlManager.class).loadSystemAccessControl();
injector.getInstance(PasswordAuthenticatorManager.class).loadPasswordAuthenticator();
injector.getInstance(EventListenerManager.class).loadConfiguredEventListener();
injector.getInstance(GroupProviderManager.class).loadConfiguredGroupProvider();
// preload index (on coordinator only)
if (injector.getInstance(ServerConfig.class).isCoordinator()) {
HeuristicIndexerManager heuristicIndexerManager = injector.getInstance(HeuristicIndexerManager.class);
heuristicIndexerManager.preloadIndex();
heuristicIndexerManager.initCache();
}
// register dynamic filter listener
registerStateStoreListeners(injector.getInstance(StateStoreListenerManager.class), injector.getInstance(DynamicFilterCacheManager.class), injector.getInstance(ServerConfig.class), injector.getInstance(NodeSchedulerConfig.class));
// Initialize snapshot Manager
injector.getInstance(SnapshotUtils.class).initialize();
injector.getInstance(Announcer.class).start();
injector.getInstance(ServerInfoResource.class).startupComplete();
log.info("======== SERVER STARTED ========");
} catch (Throwable e) {
log.error(e);
System.exit(1);
}
}
use of io.prestosql.discovery.HetuDiscoveryModule in project hetu-core by openlookeng.
the class TestHetuEmbeddedDiscoveryModule method testBinding.
@Test
public void testBinding() {
ConfigurationFactory factory = new ConfigurationFactory(ImmutableMap.<String, String>builder().put("node.internal-address", "127.0.0.1").put("node.environment", "environment").put("http-server.http.port", "8099").put("http-server.http.enabled", "true").build());
ImmutableList.Builder<Module> modules = ImmutableList.<Module>builder().add(new MBeanModule()).add(new TestingNodeModule("environment")).add(new TestingHttpServerModule()).add(new JsonModule()).add(new JaxrsModule(true)).add(new TestingJmxModule()).add(Modules.override(new DiscoveryModule()).with(new HetuDiscoveryModule())).add(Modules.override(new EmbeddedDiscoveryModule()).with(new HetuEmbeddedDiscoveryModule())).add(new ConfigurationModule(factory)).add(binder -> {
binder.bind(InternalCommunicationConfig.class);
binder.bind(HetuConfig.class);
binder.bind(FileSystemClientManager.class);
binder.bind(StateStoreProvider.class).to(LocalStateStoreProvider.class);
binder.bind(SeedStoreManager.class);
});
Injector injector = Guice.createInjector(modules.build());
assertNotNull(injector.getInstance(ServiceSelector.class));
}
Aggregations