Search in sources :

Example 1 with GuiceDaemon

use of com.peterphi.std.guice.common.daemon.GuiceDaemon in project stdlib by petergeneric.

the class GuiceRestDaemonsServiceImpl method interrupt.

@Override
public Response interrupt(final String name) {
    final Optional<GuiceDaemon> result = registry.getAll().stream().filter(d -> StringUtils.equals(name, d.getName())).findFirst();
    if (result.isPresent()) {
        final GuiceDaemon daemon = result.get();
        if (daemon.isThreadRunning() && daemon.getThread() != null) {
            Thread thread = daemon.getThread();
            thread.interrupt();
        }
        final String message = "Daemon " + daemon.getName() + " sent interrupt at " + DateTime.now();
        return Response.seeOther(UriBuilder.fromUri(restEndpoint.toString() + "/guice/threads").queryParam("message", message).build()).build();
    } else {
        throw new IllegalArgumentException("No daemon with name: " + name);
    }
}
Also used : GuiceRecurringDaemon(com.peterphi.std.guice.common.daemon.GuiceRecurringDaemon) StringUtils(org.apache.commons.lang.StringUtils) TemplateCall(com.peterphi.std.guice.web.rest.templating.TemplateCall) Inject(com.google.inject.Inject) DateTime(org.joda.time.DateTime) GuiceCoreTemplater(com.peterphi.std.guice.web.rest.templating.thymeleaf.GuiceCoreTemplater) Function(java.util.function.Function) AuthConstraint(com.peterphi.std.guice.common.auth.annotations.AuthConstraint) GuiceDaemonRegistry(com.peterphi.std.guice.common.daemon.GuiceDaemonRegistry) GuiceProperties(com.peterphi.std.guice.apploader.GuiceProperties) Response(javax.ws.rs.core.Response) Optional(java.util.Optional) Named(com.google.inject.name.Named) GuiceDaemon(com.peterphi.std.guice.common.daemon.GuiceDaemon) UriBuilder(javax.ws.rs.core.UriBuilder) URI(java.net.URI) Doc(com.peterphi.std.annotation.Doc) GuiceDaemon(com.peterphi.std.guice.common.daemon.GuiceDaemon)

Example 2 with GuiceDaemon

use of com.peterphi.std.guice.common.daemon.GuiceDaemon in project stdlib by petergeneric.

the class GuiceRestDaemonsServiceImpl method getStackTrace.

@Override
public String getStackTrace(final String name) {
    final Optional<GuiceDaemon> result = registry.getAll().stream().filter(d -> StringUtils.equals(name, d.getName())).findFirst();
    if (result.isPresent()) {
        final GuiceDaemon daemon = result.get();
        final StackTraceElement[] stack;
        if (daemon.isThreadRunning() && daemon.getThread() != null) {
            Thread thread = daemon.getThread();
            stack = thread.getStackTrace();
        } else {
            stack = null;
        }
        final TemplateCall template = templater.template(PREFIX + "daemon_stacktrace.html");
        template.set("stack", stack);
        template.set("name", daemon.getName());
        template.set("registry", registry);
        template.set("daemonDescriber", (Function<GuiceDaemon, String>) this::getDescription);
        return template.process();
    } else {
        throw new IllegalArgumentException("No daemon with name: " + name);
    }
}
Also used : GuiceRecurringDaemon(com.peterphi.std.guice.common.daemon.GuiceRecurringDaemon) StringUtils(org.apache.commons.lang.StringUtils) TemplateCall(com.peterphi.std.guice.web.rest.templating.TemplateCall) Inject(com.google.inject.Inject) DateTime(org.joda.time.DateTime) GuiceCoreTemplater(com.peterphi.std.guice.web.rest.templating.thymeleaf.GuiceCoreTemplater) Function(java.util.function.Function) AuthConstraint(com.peterphi.std.guice.common.auth.annotations.AuthConstraint) GuiceDaemonRegistry(com.peterphi.std.guice.common.daemon.GuiceDaemonRegistry) GuiceProperties(com.peterphi.std.guice.apploader.GuiceProperties) Response(javax.ws.rs.core.Response) Optional(java.util.Optional) Named(com.google.inject.name.Named) GuiceDaemon(com.peterphi.std.guice.common.daemon.GuiceDaemon) UriBuilder(javax.ws.rs.core.UriBuilder) URI(java.net.URI) Doc(com.peterphi.std.annotation.Doc) Function(java.util.function.Function) GuiceDaemon(com.peterphi.std.guice.common.daemon.GuiceDaemon) TemplateCall(com.peterphi.std.guice.web.rest.templating.TemplateCall)

Aggregations

Inject (com.google.inject.Inject)2 Named (com.google.inject.name.Named)2 Doc (com.peterphi.std.annotation.Doc)2 GuiceProperties (com.peterphi.std.guice.apploader.GuiceProperties)2 AuthConstraint (com.peterphi.std.guice.common.auth.annotations.AuthConstraint)2 GuiceDaemon (com.peterphi.std.guice.common.daemon.GuiceDaemon)2 GuiceDaemonRegistry (com.peterphi.std.guice.common.daemon.GuiceDaemonRegistry)2 GuiceRecurringDaemon (com.peterphi.std.guice.common.daemon.GuiceRecurringDaemon)2 TemplateCall (com.peterphi.std.guice.web.rest.templating.TemplateCall)2 GuiceCoreTemplater (com.peterphi.std.guice.web.rest.templating.thymeleaf.GuiceCoreTemplater)2 URI (java.net.URI)2 Optional (java.util.Optional)2 Function (java.util.function.Function)2 Response (javax.ws.rs.core.Response)2 UriBuilder (javax.ws.rs.core.UriBuilder)2 StringUtils (org.apache.commons.lang.StringUtils)2 DateTime (org.joda.time.DateTime)2