Search in sources :

Example 1 with Stop

use of org.gradle.launcher.daemon.protocol.Stop in project gradle by gradle.

the class HandleStop method execute.

@Override
public void execute(DaemonCommandExecution execution) {
    if (execution.getCommand() instanceof Stop) {
        listenerBroadcast.onExpirationEvent(new DaemonExpirationResult(DaemonExpirationStatus.IMMEDIATE_EXPIRE, EXPIRATION_REASON));
        execution.getConnection().completed(new Success(null));
    } else if (execution.getCommand() instanceof StopWhenIdle) {
        hangShutdownForTesting();
        listenerBroadcast.onExpirationEvent(new DaemonExpirationResult(DaemonExpirationStatus.GRACEFUL_EXPIRE, EXPIRATION_REASON));
        execution.getConnection().completed(new Success(null));
    } else {
        execution.proceed();
    }
}
Also used : Stop(org.gradle.launcher.daemon.protocol.Stop) StopWhenIdle(org.gradle.launcher.daemon.protocol.StopWhenIdle) DaemonExpirationResult(org.gradle.launcher.daemon.server.expiry.DaemonExpirationResult) Success(org.gradle.launcher.daemon.protocol.Success)

Example 2 with Stop

use of org.gradle.launcher.daemon.protocol.Stop in project gradle by gradle.

the class DaemonStopClient method stop.

/**
 * Stops all daemons, blocking until all have completed.
 */
public void stop() {
    CountdownTimer timer = Time.startCountdownTimer(STOP_TIMEOUT_SECONDS, TimeUnit.SECONDS);
    final Set<String> seen = new HashSet<String>();
    ExplainingSpec<DaemonContext> spec = new ExplainingSpec<DaemonContext>() {

        @Override
        public String whyUnsatisfied(DaemonContext element) {
            return "already seen";
        }

        @Override
        public boolean isSatisfiedBy(DaemonContext element) {
            return !seen.contains(element.getUid());
        }
    };
    DaemonClientConnection connection = connector.maybeConnect(spec);
    if (connection == null) {
        LOGGER.lifecycle(DaemonMessages.NO_DAEMONS_RUNNING);
        return;
    }
    LOGGER.lifecycle("Stopping Daemon(s)");
    // iterate and stop all daemons
    int numStopped = 0;
    while (connection != null && !timer.hasExpired()) {
        try {
            seen.add(connection.getDaemon().getUid());
            LOGGER.debug("Requesting daemon {} stop now", connection.getDaemon());
            boolean stopped = stopDispatcher.dispatch(connection, new Stop(idGenerator.generateId(), connection.getDaemon().getToken()));
            if (stopped) {
                numStopped++;
            }
        } finally {
            connection.stop();
        }
        connection = connector.maybeConnect(spec);
    }
    if (numStopped > 0) {
        LOGGER.lifecycle(numStopped + " Daemon" + ((numStopped > 1) ? "s" : "") + " stopped");
    }
    if (connection != null) {
        throw new GradleException(String.format("Timeout waiting for all daemons to stop. Waited %s.", timer.getElapsed()));
    }
}
Also used : DaemonContext(org.gradle.launcher.daemon.context.DaemonContext) CountdownTimer(org.gradle.internal.time.CountdownTimer) ExplainingSpec(org.gradle.api.internal.specs.ExplainingSpec) Stop(org.gradle.launcher.daemon.protocol.Stop) GradleException(org.gradle.api.GradleException) HashSet(java.util.HashSet)

Aggregations

Stop (org.gradle.launcher.daemon.protocol.Stop)2 HashSet (java.util.HashSet)1 GradleException (org.gradle.api.GradleException)1 ExplainingSpec (org.gradle.api.internal.specs.ExplainingSpec)1 CountdownTimer (org.gradle.internal.time.CountdownTimer)1 DaemonContext (org.gradle.launcher.daemon.context.DaemonContext)1 StopWhenIdle (org.gradle.launcher.daemon.protocol.StopWhenIdle)1 Success (org.gradle.launcher.daemon.protocol.Success)1 DaemonExpirationResult (org.gradle.launcher.daemon.server.expiry.DaemonExpirationResult)1