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

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

Introduction

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

Prototype

public ImmutableMap<Service, Long> startupTimes() 

Source Link

Document

Returns the service load times.

Usage

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();//from   w w  w  .j  a v a  2s .  co m

    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;
    }
}