Search in sources :

Example 1 with TaskManager

use of org.infinispan.tasks.TaskManager in project infinispan by infinispan.

the class Server method run.

public synchronized CompletableFuture<ExitStatus> run() {
    CompletableFuture<ExitStatus> r = exitHandler.getExitFuture();
    if (status == ComponentStatus.RUNNING) {
        return r;
    }
    protocolServers = new ConcurrentHashMap<>(4);
    try {
        // Load any server extensions
        extensions = new Extensions();
        extensions.load(classLoader);
        // Create the cache manager
        cacheManager = new DefaultCacheManager(configurationBuilderHolder, false);
        // Retrieve the server configuration
        serverConfiguration = SecurityActions.getCacheManagerConfiguration(cacheManager).module(ServerConfiguration.class);
        serverConfiguration.setServer(this);
        // Initialize the data sources
        dataSources = new HashMap<>();
        InitialContext initialContext = new InitialContext();
        for (DataSourceConfiguration dataSourceConfiguration : serverConfiguration.dataSources().values()) {
            DataSource dataSource = DataSourceFactory.create(dataSourceConfiguration);
            dataSources.put(dataSourceConfiguration.name(), dataSource);
            initialContext.bind(dataSourceConfiguration.jndiName(), dataSource);
        }
        // Start the cache manager
        SecurityActions.startCacheManager(cacheManager);
        BasicComponentRegistry bcr = SecurityActions.getGlobalComponentRegistry(cacheManager).getComponent(BasicComponentRegistry.class.getName());
        blockingManager = bcr.getComponent(BlockingManager.class).running();
        serverStateManager = new ServerStateManagerImpl(this, cacheManager, bcr.getComponent(GlobalConfigurationManager.class).running());
        bcr.registerComponent(ServerStateManager.class, serverStateManager, false);
        ScheduledExecutorService timeoutExecutor = bcr.getComponent(KnownComponentNames.TIMEOUT_SCHEDULE_EXECUTOR, ScheduledExecutorService.class).running();
        // BlockingManager of single container used for writing the global manifest, but this will need to change
        // when multiple containers are supported by the server. Similarly, the default cache manager is used to create
        // the clustered locks.
        Path dataRoot = serverRoot.toPath().resolve(properties.getProperty(INFINISPAN_SERVER_DATA_PATH));
        backupManager = new BackupManagerImpl(blockingManager, cacheManager, dataRoot);
        backupManager.init();
        // Register the task manager
        taskManager = bcr.getComponent(TaskManager.class).running();
        taskManager.registerTaskEngine(extensions.getServerTaskEngine(cacheManager));
        // Initialize the OpenTracing integration
        RequestTracer.start();
        for (EndpointConfiguration endpoint : serverConfiguration.endpoints().endpoints()) {
            // Start the protocol servers
            SinglePortRouteSource routeSource = new SinglePortRouteSource();
            Set<Route<? extends RouteSource, ? extends RouteDestination>> routes = ConcurrentHashMap.newKeySet();
            endpoint.connectors().parallelStream().forEach(configuration -> {
                try {
                    Class<? extends ProtocolServer> protocolServerClass = configuration.getClass().getAnnotation(ConfigurationFor.class).value().asSubclass(ProtocolServer.class);
                    ProtocolServer protocolServer = Util.getInstance(protocolServerClass);
                    protocolServer.setServerManagement(this, endpoint.admin());
                    if (configuration instanceof HotRodServerConfiguration) {
                        ElytronSASLAuthenticationProvider.init((HotRodServerConfiguration) configuration, serverConfiguration, timeoutExecutor);
                    } else if (configuration instanceof RestServerConfiguration) {
                        ElytronHTTPAuthenticator.init((RestServerConfiguration) configuration, serverConfiguration);
                    } else if (configuration instanceof RespServerConfiguration) {
                        ElytronRESPAuthenticator.init((RespServerConfiguration) configuration, serverConfiguration, blockingManager);
                    }
                    protocolServers.put(protocolServer.getName() + "-" + configuration.name(), protocolServer);
                    SecurityActions.startProtocolServer(protocolServer, configuration, cacheManager);
                    ProtocolServerConfiguration protocolConfig = protocolServer.getConfiguration();
                    if (protocolConfig.startTransport()) {
                        log.protocolStarted(protocolServer.getName(), configuration.socketBinding(), protocolConfig.host(), protocolConfig.port());
                    } else {
                        if (protocolServer instanceof HotRodServer) {
                            routes.add(new Route<>(routeSource, new HotRodServerRouteDestination(protocolServer.getName(), (HotRodServer) protocolServer)));
                            extensions.apply((HotRodServer) protocolServer);
                        } else if (protocolServer instanceof RestServer) {
                            routes.add(new Route<>(routeSource, new RestServerRouteDestination(protocolServer.getName(), (RestServer) protocolServer)));
                        } else if (protocolServer instanceof RespServer) {
                            routes.add(new Route<>(routeSource, new RespServerRouteDestination(protocolServer.getName(), (RespServer) protocolServer)));
                        }
                        log.protocolStarted(protocolServer.getName());
                    }
                } catch (Throwable t) {
                    throw t instanceof RuntimeException ? (RuntimeException) t : new RuntimeException(t);
                }
            });
            // Next we start the single-port endpoints
            SinglePortRouterConfiguration singlePortRouter = endpoint.singlePortRouter();
            SinglePortEndpointRouter endpointServer = new SinglePortEndpointRouter(singlePortRouter);
            endpointServer.start(new RoutingTable(routes), cacheManager);
            protocolServers.put("endpoint-" + endpoint.socketBinding(), endpointServer);
            log.protocolStarted(endpointServer.getName(), singlePortRouter.socketBinding(), singlePortRouter.host(), singlePortRouter.port());
            log.endpointUrl(Util.requireNonNullElse(cacheManager.getAddress(), "local"), singlePortRouter.ssl().enabled() ? "https" : "http", singlePortRouter.host(), singlePortRouter.port());
        }
        serverStateManager.start();
        // Change status
        this.status = ComponentStatus.RUNNING;
        log.serverStarted(Version.getBrandName(), Version.getBrandVersion(), timeService.timeDuration(startTime, TimeUnit.MILLISECONDS));
    } catch (Exception e) {
        r.completeExceptionally(e);
    }
    r = r.handle((status, t) -> {
        if (t != null) {
            Server.log.serverFailedToStart(Version.getBrandName(), t);
        }
        localShutdown(status);
        return null;
    });
    return r;
}
Also used : SSLContext(javax.net.ssl.SSLContext) ConfigurationBuilder(org.infinispan.configuration.cache.ConfigurationBuilder) LogFactory(org.infinispan.util.logging.LogFactory) DataSourceFactory(org.infinispan.server.datasource.DataSourceFactory) WildFlyElytronHttpBasicProvider(org.wildfly.security.http.basic.WildFlyElytronHttpBasicProvider) KnownComponentNames(org.infinispan.factories.KnownComponentNames) GlobalConfigurationManager(org.infinispan.globalstate.GlobalConfigurationManager) Log(org.infinispan.server.logging.Log) WildFlyElytronHttpSpnegoProvider(org.wildfly.security.http.spnego.WildFlyElytronHttpSpnegoProvider) WildFlyElytronHttpClientCertProvider(org.wildfly.security.http.cert.WildFlyElytronHttpClientCertProvider) BasicComponentRegistry(org.infinispan.factories.impl.BasicComponentRegistry) DefaultCacheManager(org.infinispan.manager.DefaultCacheManager) ConfigurationBuilderHolder(org.infinispan.configuration.parsing.ConfigurationBuilderHolder) Map(java.util.Map) TaskManager(org.infinispan.tasks.TaskManager) DataSourceConfiguration(org.infinispan.server.configuration.DataSourceConfiguration) ElytronSASLAuthenticationProvider(org.infinispan.server.security.ElytronSASLAuthenticationProvider) ServerStateManagerImpl(org.infinispan.server.state.ServerStateManagerImpl) Path(java.nio.file.Path) NamingManager(javax.naming.spi.NamingManager) HotRodServer(org.infinispan.server.hotrod.HotRodServer) WildFlyElytronSaslExternalProvider(org.wildfly.security.sasl.external.WildFlyElytronSaslExternalProvider) WildFlyElytronSaslScramProvider(org.wildfly.security.sasl.scram.WildFlyElytronSaslScramProvider) InitialContext(javax.naming.InitialContext) SinglePortRouteSource(org.infinispan.server.router.routes.singleport.SinglePortRouteSource) JGroupsTransport(org.infinispan.remoting.transport.jgroups.JGroupsTransport) NamedSocketFactory(org.infinispan.remoting.transport.jgroups.NamedSocketFactory) AuthorizationPermission(org.infinispan.security.AuthorizationPermission) Set(java.util.Set) EndpointConfiguration(org.infinispan.server.configuration.endpoint.EndpointConfiguration) Executors(java.util.concurrent.Executors) ComponentStatus(org.infinispan.lifecycle.ComponentStatus) RouteDestination(org.infinispan.server.router.routes.RouteDestination) CompletionStage(java.util.concurrent.CompletionStage) ConfigurationFor(org.infinispan.commons.configuration.ConfigurationFor) RestServerRouteDestination(org.infinispan.server.router.routes.rest.RestServerRouteDestination) SerializeWith(org.infinispan.commons.marshall.SerializeWith) ProtocolServerConfiguration(org.infinispan.server.core.configuration.ProtocolServerConfiguration) RouteSource(org.infinispan.server.router.routes.RouteSource) StringBuilderWriter(org.infinispan.commons.io.StringBuilderWriter) SerializableFunction(org.infinispan.util.function.SerializableFunction) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) EndpointConfigurationBuilder(org.infinispan.server.configuration.endpoint.EndpointConfigurationBuilder) Supplier(java.util.function.Supplier) EmbeddedCacheManager(org.infinispan.manager.EmbeddedCacheManager) ClusterExecutor(org.infinispan.manager.ClusterExecutor) WildFlyElytronSaslLocalUserProvider(org.wildfly.security.sasl.localuser.WildFlyElytronSaslLocalUserProvider) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) ProtocolServerConfigurationBuilder(org.infinispan.server.core.configuration.ProtocolServerConfigurationBuilder) Address(org.infinispan.remoting.transport.Address) Route(org.infinispan.server.router.routes.Route) PrivilegedActionException(java.security.PrivilegedActionException) Properties(java.util.Properties) GlobalConfigurationBuilder(org.infinispan.configuration.global.GlobalConfigurationBuilder) IOException(java.io.IOException) Authenticator(org.infinispan.rest.authentication.Authenticator) ServerManagement(org.infinispan.server.core.ServerManagement) InputStreamReader(java.io.InputStreamReader) TransportSecurityConfiguration(org.infinispan.server.configuration.security.TransportSecurityConfiguration) File(java.io.File) BackupManager(org.infinispan.server.core.BackupManager) WildFlyElytronSaslGs2Provider(org.wildfly.security.sasl.gs2.WildFlyElytronSaslGs2Provider) ServerConfiguration(org.infinispan.server.configuration.ServerConfiguration) Paths(java.nio.file.Paths) RespServerConfiguration(org.infinispan.server.resp.configuration.RespServerConfiguration) BufferedReader(java.io.BufferedReader) RestServerConfiguration(org.infinispan.rest.configuration.RestServerConfiguration) DefaultTimeService(org.infinispan.commons.time.DefaultTimeService) ConfigurationWriter(org.infinispan.commons.configuration.io.ConfigurationWriter) URL(java.net.URL) ObjectOutput(java.io.ObjectOutput) ServerAdminOperationsHandler(org.infinispan.server.tasks.admin.ServerAdminOperationsHandler) LoggingAuditLogger(org.infinispan.security.audit.LoggingAuditLogger) ProtocolServer(org.infinispan.server.core.ProtocolServer) CompletableFutures(org.infinispan.util.concurrent.CompletableFutures) ProcessInfo(org.infinispan.commons.jdkspecific.ProcessInfo) CacheConfigurationException(org.infinispan.commons.CacheConfigurationException) WildFlyElytronHttpBearerProvider(org.wildfly.security.http.bearer.WildFlyElytronHttpBearerProvider) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) RespServerRouteDestination(org.infinispan.server.router.routes.resp.RespServerRouteDestination) Collectors(java.util.stream.Collectors) List(java.util.List) OS(org.infinispan.commons.util.OS) ObjectInput(java.io.ObjectInput) TokenRealmConfiguration(org.infinispan.server.configuration.security.TokenRealmConfiguration) SinglePortRouterConfiguration(org.infinispan.server.router.configuration.SinglePortRouterConfiguration) RealmConfiguration(org.infinispan.server.configuration.security.RealmConfiguration) WildFlyElytronHttpDigestProvider(org.wildfly.security.http.digest.WildFlyElytronHttpDigestProvider) RestServer(org.infinispan.rest.RestServer) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) WildFlyElytronSaslOAuth2Provider(org.wildfly.security.sasl.oauth2.WildFlyElytronSaslOAuth2Provider) RequestTracer(org.infinispan.server.core.RequestTracer) WildFlyElytronSaslGssapiProvider(org.wildfly.security.sasl.gssapi.WildFlyElytronSaslGssapiProvider) ServerStateManager(org.infinispan.server.core.ServerStateManager) Version(org.infinispan.commons.util.Version) BackupManagerImpl(org.infinispan.server.core.backup.BackupManagerImpl) WildFlyElytronSaslDigestProvider(org.wildfly.security.sasl.digest.WildFlyElytronSaslDigestProvider) DataSource(javax.sql.DataSource) ServerConfigurationSerializer(org.infinispan.server.configuration.ServerConfigurationSerializer) ElytronRESPAuthenticator(org.infinispan.server.security.ElytronRESPAuthenticator) Util(org.infinispan.commons.util.Util) RoutingTable(org.infinispan.server.router.RoutingTable) ServerInitialContextFactoryBuilder(org.infinispan.server.context.ServerInitialContextFactoryBuilder) HotRodServerConfiguration(org.infinispan.server.hotrod.configuration.HotRodServerConfiguration) RespServer(org.infinispan.server.resp.RespServer) Security(org.infinispan.security.Security) TimeUnit(java.util.concurrent.TimeUnit) WildFlyElytronSaslPlainProvider(org.wildfly.security.sasl.plain.WildFlyElytronSaslPlainProvider) ServerConfigurationBuilder(org.infinispan.server.configuration.ServerConfigurationBuilder) Configuration(org.infinispan.configuration.cache.Configuration) ParserRegistry(org.infinispan.configuration.parsing.ParserRegistry) ElytronHTTPAuthenticator(org.infinispan.server.security.ElytronHTTPAuthenticator) SinglePortEndpointRouter(org.infinispan.server.router.router.impl.singleport.SinglePortEndpointRouter) BlockingManager(org.infinispan.util.concurrent.BlockingManager) Collections(java.util.Collections) LogManager(org.apache.logging.log4j.LogManager) TimeService(org.infinispan.commons.time.TimeService) ProtocolServerConfiguration(org.infinispan.server.core.configuration.ProtocolServerConfiguration) ServerConfiguration(org.infinispan.server.configuration.ServerConfiguration) RespServerConfiguration(org.infinispan.server.resp.configuration.RespServerConfiguration) RestServerConfiguration(org.infinispan.rest.configuration.RestServerConfiguration) HotRodServerConfiguration(org.infinispan.server.hotrod.configuration.HotRodServerConfiguration) HotRodServerConfiguration(org.infinispan.server.hotrod.configuration.HotRodServerConfiguration) RespServerRouteDestination(org.infinispan.server.router.routes.resp.RespServerRouteDestination) RestServerRouteDestination(org.infinispan.server.router.routes.rest.RestServerRouteDestination) DataSourceConfiguration(org.infinispan.server.configuration.DataSourceConfiguration) BasicComponentRegistry(org.infinispan.factories.impl.BasicComponentRegistry) ProtocolServer(org.infinispan.server.core.ProtocolServer) GlobalConfigurationManager(org.infinispan.globalstate.GlobalConfigurationManager) SinglePortRouteSource(org.infinispan.server.router.routes.singleport.SinglePortRouteSource) RouteSource(org.infinispan.server.router.routes.RouteSource) BackupManagerImpl(org.infinispan.server.core.backup.BackupManagerImpl) RestServerConfiguration(org.infinispan.rest.configuration.RestServerConfiguration) SinglePortEndpointRouter(org.infinispan.server.router.router.impl.singleport.SinglePortEndpointRouter) RespServerConfiguration(org.infinispan.server.resp.configuration.RespServerConfiguration) RespServer(org.infinispan.server.resp.RespServer) Route(org.infinispan.server.router.routes.Route) Path(java.nio.file.Path) DefaultCacheManager(org.infinispan.manager.DefaultCacheManager) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) SinglePortRouteSource(org.infinispan.server.router.routes.singleport.SinglePortRouteSource) ServerStateManagerImpl(org.infinispan.server.state.ServerStateManagerImpl) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) InitialContext(javax.naming.InitialContext) PrivilegedActionException(java.security.PrivilegedActionException) IOException(java.io.IOException) CacheConfigurationException(org.infinispan.commons.CacheConfigurationException) DataSource(javax.sql.DataSource) SinglePortRouterConfiguration(org.infinispan.server.router.configuration.SinglePortRouterConfiguration) RestServer(org.infinispan.rest.RestServer) ProtocolServerConfiguration(org.infinispan.server.core.configuration.ProtocolServerConfiguration) RoutingTable(org.infinispan.server.router.RoutingTable) HotRodServer(org.infinispan.server.hotrod.HotRodServer) EndpointConfiguration(org.infinispan.server.configuration.endpoint.EndpointConfiguration) RouteDestination(org.infinispan.server.router.routes.RouteDestination) RestServerRouteDestination(org.infinispan.server.router.routes.rest.RestServerRouteDestination) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) RespServerRouteDestination(org.infinispan.server.router.routes.resp.RespServerRouteDestination)

Example 2 with TaskManager

use of org.infinispan.tasks.TaskManager in project infinispan by infinispan.

the class TasksResourceTest method defineCaches.

@Override
protected void defineCaches(EmbeddedCacheManager cm) {
    cm.defineConfiguration("default", getDefaultCacheBuilder().build());
    GlobalComponentRegistry gcr = cm.getGlobalComponentRegistry();
    TaskManager taskManager = gcr.getComponent(TaskManager.class);
    TaskEngine taskEngine = new DummyTaskEngine();
    taskManager.registerTaskEngine(taskEngine);
}
Also used : DummyTaskEngine(org.infinispan.tasks.DummyTaskEngine) TaskEngine(org.infinispan.tasks.spi.TaskEngine) TaskManager(org.infinispan.tasks.TaskManager) GlobalComponentRegistry(org.infinispan.factories.GlobalComponentRegistry) DummyTaskEngine(org.infinispan.tasks.DummyTaskEngine)

Example 3 with TaskManager

use of org.infinispan.tasks.TaskManager in project infinispan by infinispan.

the class TasksResource method listTasks.

private CompletionStage<RestResponse> listTasks(RestRequest request) {
    String type = request.getParameter("type");
    boolean userOnly = type != null && type.equalsIgnoreCase("user");
    EmbeddedCacheManager cacheManager = invocationHelper.getRestCacheManager().getInstance();
    TaskManager taskManager = SecurityActions.getGlobalComponentRegistry(cacheManager).getComponent(TaskManager.class);
    return (userOnly ? taskManager.getUserTasksAsync() : taskManager.getTasksAsync()).thenApply(tasks -> asJsonResponse(Json.make(tasks)));
}
Also used : TaskManager(org.infinispan.tasks.TaskManager) EmbeddedCacheManager(org.infinispan.manager.EmbeddedCacheManager)

Example 4 with TaskManager

use of org.infinispan.tasks.TaskManager in project infinispan by infinispan.

the class TasksResource method runTask.

private CompletionStage<RestResponse> runTask(RestRequest request) {
    String taskName = request.variables().get("taskName");
    EmbeddedCacheManager cacheManager = invocationHelper.getRestCacheManager().getInstance();
    TaskManager taskManager = SecurityActions.getGlobalComponentRegistry(cacheManager).getComponent(TaskManager.class);
    TaskContext taskContext = new TaskContext();
    request.parameters().forEach((k, v) -> {
        if (k.startsWith("param.")) {
            taskContext.addParameter(k.substring(6), v.get(0));
        }
    });
    CompletionStage<Object> runResult = Subject.doAs(request.getSubject(), (PrivilegedAction<CompletionStage<Object>>) () -> taskManager.runTask(taskName, taskContext));
    return runResult.thenApply(result -> {
        NettyRestResponse.Builder builder = new NettyRestResponse.Builder();
        if (result instanceof byte[]) {
            builder.contentType(TEXT_PLAIN_TYPE).entity(result);
        } else {
            addEntityAsJson(Json.make(result), builder);
        }
        return builder.build();
    });
}
Also used : TaskManager(org.infinispan.tasks.TaskManager) TaskContext(org.infinispan.tasks.TaskContext) EmbeddedCacheManager(org.infinispan.manager.EmbeddedCacheManager) NettyRestResponse(org.infinispan.rest.NettyRestResponse) CompletionStage(java.util.concurrent.CompletionStage)

Example 5 with TaskManager

use of org.infinispan.tasks.TaskManager in project infinispan by infinispan.

the class LoggingResource method deleteLogger.

private CompletionStage<RestResponse> deleteLogger(RestRequest request) {
    TaskManager taskManager = invocationHelper.getServer().getTaskManager();
    String loggerName = request.variables().get("loggerName");
    return taskManager.runTask("@@logging@remove", new TaskContext().addParameter("loggerName", loggerName).subject(request.getSubject())).handle((o, t) -> handle(t));
}
Also used : TaskManager(org.infinispan.tasks.TaskManager) TaskContext(org.infinispan.tasks.TaskContext)

Aggregations

TaskManager (org.infinispan.tasks.TaskManager)6 EmbeddedCacheManager (org.infinispan.manager.EmbeddedCacheManager)3 TaskContext (org.infinispan.tasks.TaskContext)3 CompletionStage (java.util.concurrent.CompletionStage)2 NettyRestResponse (org.infinispan.rest.NettyRestResponse)2 BufferedReader (java.io.BufferedReader)1 File (java.io.File)1 IOException (java.io.IOException)1 InputStreamReader (java.io.InputStreamReader)1 ObjectInput (java.io.ObjectInput)1 ObjectOutput (java.io.ObjectOutput)1 URL (java.net.URL)1 Path (java.nio.file.Path)1 Paths (java.nio.file.Paths)1 PrivilegedActionException (java.security.PrivilegedActionException)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 Properties (java.util.Properties)1