Search in sources :

Example 1 with JsonModule

use of com.facebook.airlift.json.JsonModule in project presto by prestodb.

the class H2ResourceGroupConfigurationManagerFactory method create.

@Override
public ResourceGroupConfigurationManager<VariableMap> create(Map<String, String> config, ResourceGroupConfigurationManagerContext context) {
    try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) {
        Bootstrap app = new Bootstrap(new JsonModule(), new H2ResourceGroupsModule(), new NodeModule(), new ReloadingResourceGroupConfigurationManagerModule(), binder -> binder.bind(ResourceGroupConfigurationManagerContext.class).toInstance(context), binder -> binder.bind(ClusterMemoryPoolManager.class).toInstance(context.getMemoryPoolManager()));
        Injector injector = app.doNotInitializeLogging().setRequiredConfigurationProperties(config).quiet().initialize();
        return injector.getInstance(ReloadingResourceGroupConfigurationManager.class);
    } catch (Exception e) {
        throwIfUnchecked(e);
        throw new RuntimeException(e);
    }
}
Also used : ReloadingResourceGroupConfigurationManagerModule(com.facebook.presto.resourceGroups.reloading.ReloadingResourceGroupConfigurationManagerModule) NodeModule(com.facebook.airlift.node.NodeModule) Injector(com.google.inject.Injector) Bootstrap(com.facebook.airlift.bootstrap.Bootstrap) ThreadContextClassLoader(com.facebook.presto.spi.classloader.ThreadContextClassLoader) JsonModule(com.facebook.airlift.json.JsonModule)

Example 2 with JsonModule

use of com.facebook.airlift.json.JsonModule in project presto by prestodb.

the class TestProxyServer method setupServer.

@BeforeClass
public void setupServer() throws Exception {
    byte[] sharedSecret = Base64.getMimeEncoder().encode("test secret".getBytes(US_ASCII));
    sharedSecretFile = Files.createTempFile("secret", "txt");
    Files.write(sharedSecretFile, sharedSecret);
    Logging.initialize();
    server = new TestingPrestoServer();
    server.installPlugin(new TpchPlugin());
    server.createCatalog("tpch", "tpch");
    server.installPlugin(new BlackHolePlugin());
    server.createCatalog("blackhole", "blackhole");
    server.refreshNodes();
    Bootstrap app = new Bootstrap(new TestingNodeModule("test"), new TestingHttpServerModule(), new JsonModule(), new JaxrsModule(true), new TestingJmxModule(), new ProxyModule());
    Injector injector = app.doNotInitializeLogging().setRequiredConfigurationProperty("proxy.uri", server.getBaseUrl().toString()).setRequiredConfigurationProperty("proxy.shared-secret-file", sharedSecretFile.toString()).quiet().initialize();
    lifeCycleManager = injector.getInstance(LifeCycleManager.class);
    httpServerInfo = injector.getInstance(HttpServerInfo.class);
    executorService = newCachedThreadPool(daemonThreadsNamed("test-%s"));
    setupTestTable();
}
Also used : TestingHttpServerModule(com.facebook.airlift.http.server.testing.TestingHttpServerModule) TpchPlugin(com.facebook.presto.tpch.TpchPlugin) TestingNodeModule(com.facebook.airlift.node.testing.TestingNodeModule) TestingPrestoServer(com.facebook.presto.server.testing.TestingPrestoServer) JaxrsModule(com.facebook.airlift.jaxrs.JaxrsModule) JsonModule(com.facebook.airlift.json.JsonModule) TestingJmxModule(com.facebook.airlift.jmx.testing.TestingJmxModule) LifeCycleManager(com.facebook.airlift.bootstrap.LifeCycleManager) BlackHolePlugin(com.facebook.presto.plugin.blackhole.BlackHolePlugin) Injector(com.google.inject.Injector) Bootstrap(com.facebook.airlift.bootstrap.Bootstrap) HttpServerInfo(com.facebook.airlift.http.server.HttpServerInfo) BeforeClass(org.testng.annotations.BeforeClass)

Example 3 with JsonModule

use of com.facebook.airlift.json.JsonModule in project presto by prestodb.

the class PrestoProxy method start.

public static void start(Module... extraModules) {
    Bootstrap app = new Bootstrap(ImmutableList.<Module>builder().add(new NodeModule()).add(new HttpServerModule()).add(new JsonModule()).add(new JaxrsModule(true)).add(new MBeanModule()).add(new JmxModule()).add(new LogJmxModule()).add(new TraceTokenModule()).add(new EventModule()).add(new ProxyModule()).add(extraModules).build());
    Logger log = Logger.get(PrestoProxy.class);
    try {
        app.initialize();
        log.info("======== SERVER STARTED ========");
    } catch (Throwable t) {
        log.error(t);
        System.exit(1);
    }
}
Also used : MBeanModule(org.weakref.jmx.guice.MBeanModule) EventModule(com.facebook.airlift.event.client.EventModule) JmxModule(com.facebook.airlift.jmx.JmxModule) LogJmxModule(com.facebook.airlift.log.LogJmxModule) NodeModule(com.facebook.airlift.node.NodeModule) JaxrsModule(com.facebook.airlift.jaxrs.JaxrsModule) LogJmxModule(com.facebook.airlift.log.LogJmxModule) Logger(com.facebook.airlift.log.Logger) JsonModule(com.facebook.airlift.json.JsonModule) TraceTokenModule(com.facebook.airlift.tracetoken.TraceTokenModule) HttpServerModule(com.facebook.airlift.http.server.HttpServerModule) Bootstrap(com.facebook.airlift.bootstrap.Bootstrap)

Example 4 with JsonModule

use of com.facebook.airlift.json.JsonModule 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);
    }
}
Also used : MBeanModule(org.weakref.jmx.guice.MBeanModule) StorageModule(com.facebook.presto.raptor.storage.StorageModule) BackupModule(com.facebook.presto.raptor.backup.BackupModule) RaptorSecurityModule(com.facebook.presto.raptor.security.RaptorSecurityModule) JsonModule(com.facebook.airlift.json.JsonModule) NodeManager(com.facebook.presto.spi.NodeManager) FileSystemModule(com.facebook.presto.raptor.filesystem.FileSystemModule) RebindSafeMBeanServer(com.facebook.presto.raptor.util.RebindSafeMBeanServer) Injector(com.google.inject.Injector) Bootstrap(com.facebook.airlift.bootstrap.Bootstrap) PageSorter(com.facebook.presto.spi.PageSorter) TypeManager(com.facebook.presto.common.type.TypeManager) ManagementFactory.getPlatformMBeanServer(java.lang.management.ManagementFactory.getPlatformMBeanServer) MBeanServer(javax.management.MBeanServer) RebindSafeMBeanServer(com.facebook.presto.raptor.util.RebindSafeMBeanServer)

Example 5 with JsonModule

use of com.facebook.airlift.json.JsonModule 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;
}
Also used : AccessControlManager(com.facebook.presto.security.AccessControlManager) TestingAccessControlManager(com.facebook.presto.testing.TestingAccessControlManager) WarningCollectorModule(com.facebook.presto.execution.warnings.WarningCollectorModule) HashMap(java.util.HashMap) ImmutableList(com.google.common.collect.ImmutableList) FeaturesConfig(com.facebook.presto.sql.analyzer.FeaturesConfig) PasswordAuthenticatorManager(com.facebook.presto.server.security.PasswordAuthenticatorManager) PluginManager(com.facebook.presto.server.PluginManager) TempStorageModule(com.facebook.presto.storage.TempStorageModule) TempStorageManager(com.facebook.presto.storage.TempStorageManager) TestingTempStorageManager(com.facebook.presto.testing.TestingTempStorageManager) Injector(com.google.inject.Injector) Bootstrap(com.facebook.airlift.bootstrap.Bootstrap) EventListenerModule(com.facebook.presto.eventlistener.EventListenerModule) AccessControlModule(com.facebook.presto.security.AccessControlModule) StaticCatalogStore(com.facebook.presto.metadata.StaticCatalogStore) SessionPropertyDefaults(com.facebook.presto.server.SessionPropertyDefaults) StaticFunctionNamespaceStore(com.facebook.presto.metadata.StaticFunctionNamespaceStore) ResourceGroupManager(com.facebook.presto.execution.resourceGroups.ResourceGroupManager) JsonModule(com.facebook.airlift.json.JsonModule) TestingAccessControlManager(com.facebook.presto.testing.TestingAccessControlManager) TestingTempStorageManager(com.facebook.presto.testing.TestingTempStorageManager) SmileModule(com.facebook.airlift.json.smile.SmileModule) Module(com.google.inject.Module) WarningCollectorModule(com.facebook.presto.execution.warnings.WarningCollectorModule) AccessControlModule(com.facebook.presto.security.AccessControlModule) JsonModule(com.facebook.airlift.json.JsonModule) EventListenerModule(com.facebook.presto.eventlistener.EventListenerModule) SmileModule(com.facebook.airlift.json.smile.SmileModule) TempStorageModule(com.facebook.presto.storage.TempStorageModule)

Aggregations

JsonModule (com.facebook.airlift.json.JsonModule)38 Injector (com.google.inject.Injector)37 Bootstrap (com.facebook.airlift.bootstrap.Bootstrap)36 TypeManager (com.facebook.presto.common.type.TypeManager)15 Module (com.google.inject.Module)10 NodeManager (com.facebook.presto.spi.NodeManager)8 JsonBinder.jsonBinder (com.facebook.airlift.json.JsonBinder.jsonBinder)7 FeaturesConfig (com.facebook.presto.sql.analyzer.FeaturesConfig)7 ImmutableList (com.google.common.collect.ImmutableList)7 ConfigBinder.configBinder (com.facebook.airlift.configuration.ConfigBinder.configBinder)6 JsonCodecBinder.jsonCodecBinder (com.facebook.airlift.json.JsonCodecBinder.jsonCodecBinder)6 Type (com.facebook.presto.common.type.Type)6 FunctionAndTypeManager (com.facebook.presto.metadata.FunctionAndTypeManager)6 FunctionAndTypeManager.createTestFunctionAndTypeManager (com.facebook.presto.metadata.FunctionAndTypeManager.createTestFunctionAndTypeManager)6 HandleJsonModule (com.facebook.presto.metadata.HandleJsonModule)6 TypeDeserializer (com.facebook.presto.type.TypeDeserializer)6 Multibinder.newSetBinder (com.google.inject.multibindings.Multibinder.newSetBinder)6 Map (java.util.Map)6 Test (org.testng.annotations.Test)6 MBeanModule (org.weakref.jmx.guice.MBeanModule)6