Example usage for com.google.common.util.concurrent ServiceManager servicesByState

List of usage examples for com.google.common.util.concurrent ServiceManager servicesByState

Introduction

In this page you can find the example usage for com.google.common.util.concurrent ServiceManager servicesByState.

Prototype

public ImmutableMultimap<State, Service> servicesByState() 

Source Link

Document

Provides a snapshot of the current state of all the services under management.

Usage

From source file:org.apache.aurora.GuavaUtils.java

/**
 * Create a new {@link ServiceManagerIface} that wraps a {@link ServiceManager}.
 *
 * @param delegate Service manager to delegate to.
 * @return A wrapper.//from   w w w  . j a v  a 2 s.  co  m
 */
public static ServiceManagerIface serviceManager(final ServiceManager delegate) {
    return new ServiceManagerIface() {
        @Override
        public ServiceManagerIface startAsync() {
            delegate.startAsync();
            return this;
        }

        @Override
        public void awaitHealthy() {
            delegate.awaitHealthy();
        }

        @Override
        public ServiceManagerIface stopAsync() {
            delegate.stopAsync();
            return this;
        }

        @Override
        public void awaitStopped(long timeout, TimeUnit unit) throws TimeoutException {
            delegate.awaitStopped(timeout, unit);
        }

        @Override
        public ImmutableMultimap<State, Service> servicesByState() {
            return delegate.servicesByState();
        }
    };
}

From source file:org.graylog2.bootstrap.ServerBootstrap.java

@Override
protected void startCommand() {
    final AuditLogger auditLogger = injector.getInstance(AuditLogger.class);
    final Map<String, Object> auditLogContext = ImmutableMap.of("version", version, "java",
            Tools.getSystemInformation());
    auditLogger.success("<system>", "initiated", "startup", auditLogContext);

    final OS os = OS.getOs();

    LOG.info("Graylog {} {} starting up", commandName, version);
    LOG.info("JRE: {}", Tools.getSystemInformation());
    LOG.info("Deployment: {}", configuration.getInstallationSource());
    LOG.info("OS: {}", os.getPlatformName());
    LOG.info("Arch: {}", os.getArch());

    final ServerStatus serverStatus = injector.getInstance(ServerStatus.class);
    serverStatus.initialize();/*w  ww . j  a v  a  2s  .  com*/

    startNodeRegistration(injector);

    final ActivityWriter activityWriter;
    final ServiceManager serviceManager;
    try {
        activityWriter = injector.getInstance(ActivityWriter.class);
        serviceManager = injector.getInstance(ServiceManager.class);
    } catch (ProvisionException e) {
        LOG.error("Guice error", e);
        annotateProvisionException(e);
        auditLogger.failure("<system>", "initiated", "startup", auditLogContext);
        System.exit(-1);
        return;
    } catch (Exception e) {
        LOG.error("Unexpected exception", e);
        auditLogger.failure("<system>", "initiated", "startup", auditLogContext);
        System.exit(-1);
        return;
    }

    Runtime.getRuntime().addShutdownHook(new Thread(injector.getInstance(shutdownHook())));

    // propagate default size to input plugins
    MessageInput.setDefaultRecvBufferSize(configuration.getUdpRecvBufferSizes());

    // Start services.
    final ServiceManagerListener serviceManagerListener = injector.getInstance(ServiceManagerListener.class);
    serviceManager.addListener(serviceManagerListener);
    try {
        serviceManager.startAsync().awaitHealthy();
    } catch (Exception e) {
        try {
            serviceManager.stopAsync().awaitStopped(configuration.getShutdownTimeout(), TimeUnit.MILLISECONDS);
        } catch (TimeoutException timeoutException) {
            LOG.error("Unable to shutdown properly on time. {}", serviceManager.servicesByState());
        }
        LOG.error("Graylog startup failed. Exiting. Exception was:", e);
        auditLogger.failure("<system>", "initiated", "startup", auditLogContext);
        System.exit(-1);
    }
    LOG.info("Services started, startup times in ms: {}", serviceManager.startupTimes());

    activityWriter.write(new Activity("Started up.", Main.class));
    LOG.info("Graylog " + commandName + " up and running.");
    auditLogger.success("<system>", "completed", "startup", auditLogContext);

    // Block forever.
    try {
        Thread.currentThread().join();
    } catch (InterruptedException e) {
        return;
    }
}