use of com.facebook.airlift.bootstrap.Bootstrap in project presto by prestodb.
the class RaptorConnectorFactory method create.
@Override
public Connector create(String catalogName, Map<String, String> config, ConnectorContext context) {
NodeManager nodeManager = context.getNodeManager();
try {
Bootstrap app = new Bootstrap(new JsonModule(), new MBeanModule(), binder -> {
MBeanServer mbeanServer = new RebindSafeMBeanServer(getPlatformMBeanServer());
binder.bind(MBeanServer.class).toInstance(mbeanServer);
binder.bind(NodeManager.class).toInstance(nodeManager);
binder.bind(PageSorter.class).toInstance(context.getPageSorter());
binder.bind(TypeManager.class).toInstance(context.getTypeManager());
}, metadataModule, new FileSystemModule(fileSystemProviders), new BackupModule(backupProviders), new StorageModule(catalogName), new RaptorModule(catalogName), new RaptorSecurityModule(), new RaptorProcedureModule());
Injector injector = app.doNotInitializeLogging().setRequiredConfigurationProperties(config).initialize();
return injector.getInstance(RaptorConnector.class);
} catch (Exception e) {
throwIfUnchecked(e);
throw new RuntimeException(e);
}
}
use of com.facebook.airlift.bootstrap.Bootstrap in project presto by prestodb.
the class PrestoSparkInjectorFactory method create.
public Injector create() {
// TODO: migrate docker containers to a newer JVM, then re-enable it
// verifyJvmRequirements();
verifySystemTimeIsReasonable();
ImmutableList.Builder<Module> modules = ImmutableList.builder();
modules.add(new JsonModule(), new SmileModule(), new EventListenerModule(), new PrestoSparkModule(sparkProcessType, sqlParserOptions), new WarningCollectorModule());
if (isForTesting) {
modules.add(binder -> {
binder.bind(TestingAccessControlManager.class).in(Scopes.SINGLETON);
binder.bind(AccessControlManager.class).to(TestingAccessControlManager.class).in(Scopes.SINGLETON);
binder.bind(AccessControl.class).to(AccessControlManager.class).in(Scopes.SINGLETON);
binder.bind(TestingTempStorageManager.class).in(Scopes.SINGLETON);
binder.bind(TempStorageManager.class).to(TestingTempStorageManager.class).in(Scopes.SINGLETON);
newSetBinder(binder, PrestoSparkServiceWaitTimeMetrics.class).addBinding().to(PrestoSparkTestingServiceWaitTimeMetrics.class).in(Scopes.SINGLETON);
});
} else {
modules.add(new AccessControlModule());
modules.add(new TempStorageModule());
}
modules.addAll(additionalModules);
Bootstrap app = new Bootstrap(modules.build());
// Stream redirect doesn't work well with spark logging
app.doNotInitializeLogging();
Map<String, String> requiredProperties = new HashMap<>();
requiredProperties.put("node.environment", "spark");
requiredProperties.putAll(configProperties);
app.setRequiredConfigurationProperties(ImmutableMap.copyOf(requiredProperties));
Injector injector = app.initialize();
try {
injector.getInstance(PluginManager.class).loadPlugins();
injector.getInstance(StaticCatalogStore.class).loadCatalogs(catalogProperties);
injector.getInstance(ResourceGroupManager.class).loadConfigurationManager();
injector.getInstance(PasswordAuthenticatorManager.class).loadPasswordAuthenticator();
eventListenerProperties.ifPresent(properties -> injector.getInstance(EventListenerManager.class).loadConfiguredEventListener(properties));
if (!isForTesting) {
if (accessControlProperties.isPresent()) {
injector.getInstance(AccessControlManager.class).loadSystemAccessControl(accessControlProperties.get());
} else {
injector.getInstance(AccessControlManager.class).loadSystemAccessControl();
}
if (tempStorageProperties.isPresent()) {
injector.getInstance(TempStorageManager.class).loadTempStorages(tempStorageProperties.get());
} else {
injector.getInstance(TempStorageManager.class).loadTempStorages();
}
}
if ((sparkProcessType.equals(DRIVER))) {
if (sessionPropertyConfigurationProperties.isPresent()) {
injector.getInstance(SessionPropertyDefaults.class).loadConfigurationManager(sessionPropertyConfigurationProperties.get());
} else {
injector.getInstance(SessionPropertyDefaults.class).loadConfigurationManager();
}
}
if (sparkProcessType.equals(DRIVER) || !injector.getInstance(FeaturesConfig.class).isInlineSqlFunctions()) {
if (functionNamespaceProperties.isPresent()) {
injector.getInstance(StaticFunctionNamespaceStore.class).loadFunctionNamespaceManagers(functionNamespaceProperties.get());
} else {
injector.getInstance(StaticFunctionNamespaceStore.class).loadFunctionNamespaceManagers();
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return injector;
}
use of com.facebook.airlift.bootstrap.Bootstrap in project presto by prestodb.
the class JdbcConnectorFactory method create.
@Override
public Connector create(String catalogName, Map<String, String> requiredConfig, ConnectorContext context) {
requireNonNull(requiredConfig, "requiredConfig is null");
try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) {
Bootstrap app = new Bootstrap(binder -> {
binder.bind(FunctionMetadataManager.class).toInstance(context.getFunctionMetadataManager());
binder.bind(StandardFunctionResolution.class).toInstance(context.getStandardFunctionResolution());
binder.bind(RowExpressionService.class).toInstance(context.getRowExpressionService());
}, new JdbcModule(catalogName), module);
Injector injector = app.doNotInitializeLogging().setRequiredConfigurationProperties(requiredConfig).initialize();
return injector.getInstance(JdbcConnector.class);
} catch (Exception e) {
throwIfUnchecked(e);
throw new RuntimeException(e);
}
}
use of com.facebook.airlift.bootstrap.Bootstrap in project presto by prestodb.
the class DeltaConnectorFactory method create.
@Override
public Connector create(String catalogName, Map<String, String> requiredConfig, ConnectorContext context) {
requireNonNull(requiredConfig, "requiredConfig is null");
try {
Bootstrap app = new Bootstrap(new JsonModule(), new DeltaModule(catalogName, context.getTypeManager()), new HiveS3Module(catalogName), new HiveGcsModule(), new HiveAuthenticationModule(), new HiveMetastoreModule(catalogName, Optional.empty()), binder -> {
binder.bind(RowExpressionService.class).toInstance(context.getRowExpressionService());
});
Injector injector = app.doNotInitializeLogging().setRequiredConfigurationProperties(requiredConfig).initialize();
return injector.getInstance(DeltaConnector.class);
} catch (Exception exception) {
throwIfUnchecked(exception);
throw new RuntimeException(exception);
}
}
use of com.facebook.airlift.bootstrap.Bootstrap in project presto by prestodb.
the class TestDeltaTableHandle method getJsonCodec.
private JsonCodec<DeltaTableHandle> getJsonCodec() {
Module module = binder -> {
binder.install(new JsonModule());
binder.install(new HandleJsonModule());
configBinder(binder).bindConfig(FeaturesConfig.class);
FunctionAndTypeManager functionAndTypeManager = createTestFunctionAndTypeManager();
binder.bind(TypeManager.class).toInstance(functionAndTypeManager);
jsonBinder(binder).addDeserializerBinding(Type.class).to(TypeDeserializer.class);
newSetBinder(binder, Type.class);
binder.bind(BlockEncodingSerde.class).to(BlockEncodingManager.class).in(Scopes.SINGLETON);
newSetBinder(binder, BlockEncoding.class);
jsonBinder(binder).addSerializerBinding(Block.class).to(BlockJsonSerde.Serializer.class);
jsonBinder(binder).addDeserializerBinding(Block.class).to(BlockJsonSerde.Deserializer.class);
jsonCodecBinder(binder).bindJsonCodec(DeltaTableHandle.class);
jsonCodecBinder(binder).bindJsonCodec(DeltaTable.class);
jsonCodecBinder(binder).bindJsonCodec(DeltaColumnHandle.class);
};
Bootstrap app = new Bootstrap(ImmutableList.of(module));
Injector injector = app.doNotInitializeLogging().quiet().initialize();
HandleResolver handleResolver = injector.getInstance(HandleResolver.class);
handleResolver.addConnectorName("delta", new DeltaConnectionHandleResolver());
return injector.getInstance(new Key<JsonCodec<DeltaTableHandle>>() {
});
}
Aggregations