diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2019-05-02 12:26:06 +0200 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2019-06-03 20:21:19 +0200 |
commit | 0e90581357a2a9e0a8604246b121a98e4d30d646 (patch) | |
tree | 79dcea0792542a4ae9cf892fdade9e352425ce7c /server/sonar-main/src | |
parent | d803a7b56badb25efe47ee26e842d7196ba7a419 (diff) | |
download | sonarqube-0e90581357a2a9e0a8604246b121a98e4d30d646.tar.gz sonarqube-0e90581357a2a9e0a8604246b121a98e4d30d646.zip |
SONAR-12043 rename current shutdown code from stop to hardStop
Diffstat (limited to 'server/sonar-main/src')
13 files changed, 88 insertions, 91 deletions
diff --git a/server/sonar-main/src/main/java/org/sonar/application/Scheduler.java b/server/sonar-main/src/main/java/org/sonar/application/Scheduler.java index 3c1bc957659..1f4e19d75da 100644 --- a/server/sonar-main/src/main/java/org/sonar/application/Scheduler.java +++ b/server/sonar-main/src/main/java/org/sonar/application/Scheduler.java @@ -26,7 +26,7 @@ public interface Scheduler { /** * Stops all processes and waits for them to be down. */ - void terminate(); + void hardStop(); /** * Blocks until all processes are down diff --git a/server/sonar-main/src/main/java/org/sonar/application/SchedulerImpl.java b/server/sonar-main/src/main/java/org/sonar/application/SchedulerImpl.java index 8a01020fd7d..2bcd1b21b19 100644 --- a/server/sonar-main/src/main/java/org/sonar/application/SchedulerImpl.java +++ b/server/sonar-main/src/main/java/org/sonar/application/SchedulerImpl.java @@ -58,7 +58,7 @@ public class SchedulerImpl implements Scheduler, ProcessEventListener, ProcessLi private final EnumMap<ProcessId, SQProcess> processesById = new EnumMap<>(ProcessId.class); private final AtomicInteger operationalCountDown = new AtomicInteger(); private final AtomicInteger stopCountDown = new AtomicInteger(0); - private StopperThread stopperThread; + private HardStopperThread hardStopperThread; private RestarterThread restarterThread; private long processWatcherDelayMs = SQProcess.DEFAULT_WATCHER_DELAY_MS; @@ -159,35 +159,35 @@ public class SchedulerImpl implements Scheduler, ProcessEventListener, ProcessLi process.start(processMonitorSupplier); } catch (RuntimeException e) { // failed to start command -> stop everything - terminate(); + hardStop(); throw e; } } - private void stopAll() { + private void hardStopAll() { // order is important for non-cluster mode - stopProcess(ProcessId.COMPUTE_ENGINE); - stopProcess(ProcessId.WEB_SERVER); - stopProcess(ProcessId.ELASTICSEARCH); + hardStopProcess(ProcessId.COMPUTE_ENGINE); + hardStopProcess(ProcessId.WEB_SERVER); + hardStopProcess(ProcessId.ELASTICSEARCH); } /** - * Request for graceful stop then blocks until process is stopped. + * Request for quick stop then blocks until process is stopped. * Returns immediately if the process is disabled in configuration. */ - private void stopProcess(ProcessId processId) { + private void hardStopProcess(ProcessId processId) { SQProcess process = processesById.get(processId); if (process != null) { - process.stop(1, TimeUnit.MINUTES); + // FIXME MMF-1673 timeout here must be changed to sonar.ce.task.timeout + 5 minutes if CE + process.hardStop(1, TimeUnit.MINUTES); } } /** - * Blocks until all processes are stopped. Pending restart, if - * any, is disabled. + * Blocks until all processes are quickly stopped. Pending restart, if any, is disabled. */ @Override - public void terminate() { + public void hardStop() { // disable ability to request for restart restartRequested.set(false); restartDisabled.set(true); @@ -195,9 +195,9 @@ public class SchedulerImpl implements Scheduler, ProcessEventListener, ProcessLi if (nodeLifecycle.tryToMoveTo(NodeLifecycle.State.STOPPING)) { LOG.info("Stopping SonarQube"); } - stopAll(); - if (stopperThread != null) { - stopperThread.interrupt(); + hardStopAll(); + if (hardStopperThread != null) { + hardStopperThread.interrupt(); } if (restarterThread != null) { restarterThread.interrupt(); @@ -219,7 +219,7 @@ public class SchedulerImpl implements Scheduler, ProcessEventListener, ProcessLi if (type == Type.OPERATIONAL) { onProcessOperational(processId); } else if (type == Type.ASK_FOR_RESTART && restartRequested.compareAndSet(false, true)) { - stopAsync(); + hardStopAsync(); } } @@ -242,7 +242,7 @@ public class SchedulerImpl implements Scheduler, ProcessEventListener, ProcessLi public void onProcessState(ProcessId processId, Lifecycle.State to) { switch (to) { case STOPPED: - onProcessStop(processId); + onProcessHardStop(processId); break; case STARTING: stopCountDown.incrementAndGet(); @@ -253,7 +253,7 @@ public class SchedulerImpl implements Scheduler, ProcessEventListener, ProcessLi } } - private void onProcessStop(ProcessId processId) { + private void onProcessHardStop(ProcessId processId) { LOG.info("Process [{}] is stopped", processId.getKey()); if (stopCountDown.decrementAndGet() == 0 && nodeLifecycle.tryToMoveTo(NodeLifecycle.State.STOPPED)) { if (!restartDisabled.get() && @@ -264,18 +264,18 @@ public class SchedulerImpl implements Scheduler, ProcessEventListener, ProcessLi LOG.info("SonarQube is stopped"); // all processes are stopped, no restart requested // Let's clean-up resources - terminate(); + hardStop(); } } else if (nodeLifecycle.tryToMoveTo(NodeLifecycle.State.STOPPING)) { // this is the first process stopping - stopAsync(); + hardStopAsync(); } } - private void stopAsync() { - stopperThread = new StopperThread(); - stopperThread.start(); + private void hardStopAsync() { + hardStopperThread = new HardStopperThread(); + hardStopperThread.start(); } private void restartAsync() { @@ -295,19 +295,19 @@ public class SchedulerImpl implements Scheduler, ProcessEventListener, ProcessLi schedule(); } catch (Exception e) { LOG.error("Fail to restart", e); - terminate(); + hardStop(); } } } - private class StopperThread extends Thread { - public StopperThread() { - super("Stopper"); + private class HardStopperThread extends Thread { + public HardStopperThread() { + super("Hard stopper"); } @Override public void run() { - stopAll(); + hardStopAll(); } } } diff --git a/server/sonar-main/src/main/java/org/sonar/application/process/EsProcessMonitor.java b/server/sonar-main/src/main/java/org/sonar/application/process/EsProcessMonitor.java index 97c76df7fa5..4febd4d9955 100644 --- a/server/sonar-main/src/main/java/org/sonar/application/process/EsProcessMonitor.java +++ b/server/sonar-main/src/main/java/org/sonar/application/process/EsProcessMonitor.java @@ -115,7 +115,7 @@ public class EsProcessMonitor extends AbstractProcessMonitor { } @Override - public void askForStop() { + public void askForHardStop() { process.destroy(); } diff --git a/server/sonar-main/src/main/java/org/sonar/application/process/StopRequestWatcherImpl.java b/server/sonar-main/src/main/java/org/sonar/application/process/HardStopRequestWatcherImpl.java index 22dc51718a2..e86733df140 100644 --- a/server/sonar-main/src/main/java/org/sonar/application/process/StopRequestWatcherImpl.java +++ b/server/sonar-main/src/main/java/org/sonar/application/process/HardStopRequestWatcherImpl.java @@ -27,7 +27,7 @@ import org.sonar.process.sharedmemoryfile.ProcessCommands; import static org.sonar.process.ProcessProperties.Property.ENABLE_STOP_COMMAND; -public class StopRequestWatcherImpl extends Thread implements StopRequestWatcher { +public class HardStopRequestWatcherImpl extends Thread implements StopRequestWatcher { private static final long DEFAULT_WATCHER_DELAY_MS = 500L; @@ -36,8 +36,8 @@ public class StopRequestWatcherImpl extends Thread implements StopRequestWatcher private final AppSettings settings; private long delayMs = DEFAULT_WATCHER_DELAY_MS; - StopRequestWatcherImpl(AppSettings settings, Runnable listener, ProcessCommands commands) { - super("StopRequestWatcherImpl"); + HardStopRequestWatcherImpl(AppSettings settings, Runnable listener, ProcessCommands commands) { + super("HardStopRequestWatcherImpl"); this.settings = settings; this.commands = commands; this.listener = listener; @@ -47,9 +47,9 @@ public class StopRequestWatcherImpl extends Thread implements StopRequestWatcher setDaemon(true); } - public static StopRequestWatcherImpl create(AppSettings settings, Runnable listener, FileSystem fs) { + public static HardStopRequestWatcherImpl create(AppSettings settings, Runnable listener, FileSystem fs) { DefaultProcessCommands commands = DefaultProcessCommands.secondary(fs.getTempDir(), ProcessId.APP.getIpcIndex()); - return new StopRequestWatcherImpl(settings, listener, commands); + return new HardStopRequestWatcherImpl(settings, listener, commands); } long getDelayMs() { @@ -64,7 +64,7 @@ public class StopRequestWatcherImpl extends Thread implements StopRequestWatcher public void run() { try { while (true) { - if (commands.askedForStop()) { + if (commands.askedForHardStop()) { listener.run(); return; } diff --git a/server/sonar-main/src/main/java/org/sonar/application/process/Lifecycle.java b/server/sonar-main/src/main/java/org/sonar/application/process/Lifecycle.java index 45854b8ef00..8840af21194 100644 --- a/server/sonar-main/src/main/java/org/sonar/application/process/Lifecycle.java +++ b/server/sonar-main/src/main/java/org/sonar/application/process/Lifecycle.java @@ -34,12 +34,12 @@ import static org.sonar.application.process.Lifecycle.State.INIT; import static org.sonar.application.process.Lifecycle.State.STARTED; import static org.sonar.application.process.Lifecycle.State.STARTING; import static org.sonar.application.process.Lifecycle.State.STOPPED; -import static org.sonar.application.process.Lifecycle.State.STOPPING; +import static org.sonar.application.process.Lifecycle.State.HARD_STOPPING; public class Lifecycle { public enum State { - INIT, STARTING, STARTED, STOPPING, STOPPED + INIT, STARTING, STARTED, HARD_STOPPING, STOPPED } private static final Logger LOG = LoggerFactory.getLogger(Lifecycle.class); @@ -62,9 +62,9 @@ public class Lifecycle { private static Map<State, Set<State>> buildTransitions() { Map<State, Set<State>> res = new EnumMap<>(State.class); res.put(INIT, toSet(STARTING)); - res.put(STARTING, toSet(STARTED, STOPPING, STOPPED)); - res.put(STARTED, toSet(STOPPING, STOPPED)); - res.put(STOPPING, toSet(STOPPED)); + res.put(STARTING, toSet(STARTED, HARD_STOPPING, STOPPED)); + res.put(STARTED, toSet(HARD_STOPPING, STOPPED)); + res.put(HARD_STOPPING, toSet(STOPPED)); res.put(STOPPED, toSet()); return Collections.unmodifiableMap(res); } diff --git a/server/sonar-main/src/main/java/org/sonar/application/process/ProcessCommandsProcessMonitor.java b/server/sonar-main/src/main/java/org/sonar/application/process/ProcessCommandsProcessMonitor.java index 3cee7d90f46..f39ba194c1e 100644 --- a/server/sonar-main/src/main/java/org/sonar/application/process/ProcessCommandsProcessMonitor.java +++ b/server/sonar-main/src/main/java/org/sonar/application/process/ProcessCommandsProcessMonitor.java @@ -42,11 +42,11 @@ class ProcessCommandsProcessMonitor extends AbstractProcessMonitor { } /** - * Send request to gracefully stop to the process (via ipc shared memory) + * Send request to quickly stop to the process (via ipc shared memory) */ @Override - public void askForStop() { - commands.askForStop(); + public void askForHardStop() { + commands.askForHardStop(); } /** diff --git a/server/sonar-main/src/main/java/org/sonar/application/process/ProcessMonitor.java b/server/sonar-main/src/main/java/org/sonar/application/process/ProcessMonitor.java index aa7f8d5d3a5..64ea69b5dc4 100644 --- a/server/sonar-main/src/main/java/org/sonar/application/process/ProcessMonitor.java +++ b/server/sonar-main/src/main/java/org/sonar/application/process/ProcessMonitor.java @@ -68,9 +68,9 @@ public interface ProcessMonitor { boolean isOperational(); /** - * Send request to gracefully stop to the process + * Send request to quick stop to the process */ - void askForStop(); + void askForHardStop(); /** * Whether the process asked for a full restart diff --git a/server/sonar-main/src/main/java/org/sonar/application/process/SQProcess.java b/server/sonar-main/src/main/java/org/sonar/application/process/SQProcess.java index 1cf89fe6597..576cb17e575 100644 --- a/server/sonar-main/src/main/java/org/sonar/application/process/SQProcess.java +++ b/server/sonar-main/src/main/java/org/sonar/application/process/SQProcess.java @@ -95,13 +95,13 @@ public class SQProcess { * Sends kill signal and awaits termination. No guarantee that process is gracefully terminated (=shutdown hooks * executed). It depends on OS. */ - public void stop(long timeout, TimeUnit timeoutUnit) { - if (lifecycle.tryToMoveTo(Lifecycle.State.STOPPING)) { - stopGracefully(timeout, timeoutUnit); + public void hardStop(long timeout, TimeUnit timeoutUnit) { + if (lifecycle.tryToMoveTo(Lifecycle.State.HARD_STOPPING)) { + hardStopImpl(timeout, timeoutUnit); if (process != null && process.isAlive()) { - LOG.info("{} failed to stop in a timely fashion. Killing it.", processId.getKey()); + LOG.info("{} failed to stop in a quick fashion. Killing it.", processId.getKey()); } - // enforce stop and clean-up even if process has been gracefully stopped + // enforce stop and clean-up even if process has been quickly stopped stopForcibly(); } else { // already stopping or stopped @@ -120,20 +120,19 @@ public class SQProcess { } } - private void stopGracefully(long timeout, TimeUnit timeoutUnit) { + private void hardStopImpl(long timeout, TimeUnit timeoutUnit) { if (process == null) { return; } try { - // request graceful stop - process.askForStop(); + process.askForHardStop(); process.waitFor(timeout, timeoutUnit); } catch (InterruptedException e) { // can't wait for the termination of process. Let's assume it's down. - LOG.warn("Interrupted while stopping process {}", processId, e); + LOG.warn("Interrupted while hard stopping process {}", processId, e); Thread.currentThread().interrupt(); } catch (Throwable e) { - LOG.error("Can not ask for graceful stop of process {}", processId, e); + LOG.error("Failed while asking for hard stop of process {}", processId, e); } } @@ -190,7 +189,7 @@ public class SQProcess { // this name is different than Thread#toString(), which includes name, priority // and thread group // -> do not override toString() - super(format("StopWatcher[%s]", processId.getKey())); + super(format("HardStopWatcher[%s]", processId.getKey())); } @Override diff --git a/server/sonar-main/src/test/java/org/sonar/application/SchedulerImplTest.java b/server/sonar-main/src/test/java/org/sonar/application/SchedulerImplTest.java index 2fc2e3324d0..8390c7d4c22 100644 --- a/server/sonar-main/src/test/java/org/sonar/application/SchedulerImplTest.java +++ b/server/sonar-main/src/test/java/org/sonar/application/SchedulerImplTest.java @@ -128,7 +128,7 @@ public class SchedulerImplTest { processLauncher.processes.values().forEach(p -> assertThat(p.isAlive()).isTrue()); // processes are stopped in reverse order of startup - underTest.terminate(); + underTest.hardStop(); assertThat(orderedStops).containsExactly(COMPUTE_ENGINE, WEB_SERVER, ELASTICSEARCH); processLauncher.processes.values().forEach(p -> assertThat(p.isAlive()).isFalse()); @@ -147,7 +147,7 @@ public class SchedulerImplTest { processLauncher.processes.values().forEach(p -> assertThat(p.isAlive()).isFalse()); // following does nothing - underTest.terminate(); + underTest.hardStop(); underTest.awaitTermination(); } @@ -170,11 +170,11 @@ public class SchedulerImplTest { public void terminate_can_be_called_multiple_times() throws Exception { Scheduler underTest = startAll(); - underTest.terminate(); + underTest.hardStop(); processLauncher.processes.values().forEach(p -> assertThat(p.isAlive()).isFalse()); // does nothing - underTest.terminate(); + underTest.hardStop(); } @Test @@ -185,7 +185,7 @@ public class SchedulerImplTest { awaitingTermination.start(); assertThat(awaitingTermination.isAlive()).isTrue(); - underTest.terminate(); + underTest.hardStop(); // the thread is being stopped awaitingTermination.join(); assertThat(awaitingTermination.isAlive()).isFalse(); @@ -218,7 +218,7 @@ public class SchedulerImplTest { processLauncher.waitForProcessAlive(ProcessId.ELASTICSEARCH); assertThat(processLauncher.processes).hasSize(1); - underTest.terminate(); + underTest.hardStop(); } @Test @@ -234,7 +234,7 @@ public class SchedulerImplTest { processLauncher.waitForProcessAlive(COMPUTE_ENGINE); assertThat(processLauncher.processes).hasSize(2); - underTest.terminate(); + underTest.hardStop(); } @Test @@ -252,7 +252,7 @@ public class SchedulerImplTest { processLauncher.waitForProcessAlive(ProcessId.ELASTICSEARCH); assertThat(processLauncher.processes).hasSize(1); - underTest.terminate(); + underTest.hardStop(); } @Test @@ -274,7 +274,7 @@ public class SchedulerImplTest { processLauncher.waitForProcessAlive(COMPUTE_ENGINE); assertThat(processLauncher.processes).hasSize(2); - underTest.terminate(); + underTest.hardStop(); } @Test @@ -292,7 +292,7 @@ public class SchedulerImplTest { processLauncher.waitForProcessAlive(WEB_SERVER); assertThat(processLauncher.processes).hasSize(1); - underTest.terminate(); + underTest.hardStop(); } private SchedulerImpl newScheduler(boolean clustered) { @@ -429,7 +429,7 @@ public class SchedulerImplTest { } @Override - public void askForStop() { + public void askForHardStop() { destroyForcibly(); } diff --git a/server/sonar-main/src/test/java/org/sonar/application/process/StopRequestWatcherImplTest.java b/server/sonar-main/src/test/java/org/sonar/application/process/HardStopRequestWatcherImplTest.java index a3b06c149dc..ac8a4a44337 100644 --- a/server/sonar-main/src/test/java/org/sonar/application/process/StopRequestWatcherImplTest.java +++ b/server/sonar-main/src/test/java/org/sonar/application/process/HardStopRequestWatcherImplTest.java @@ -40,7 +40,7 @@ import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import static org.sonar.process.ProcessProperties.Property.ENABLE_STOP_COMMAND; -public class StopRequestWatcherImplTest { +public class HardStopRequestWatcherImplTest { @Rule public TemporaryFolder temp = new TemporaryFolder(); @@ -54,7 +54,7 @@ public class StopRequestWatcherImplTest { @Test public void do_not_watch_command_if_disabled() { enableSetting(false); - StopRequestWatcherImpl underTest = new StopRequestWatcherImpl(settings, listener, commands); + HardStopRequestWatcherImpl underTest = new HardStopRequestWatcherImpl(settings, listener, commands); underTest.startWatching(); assertThat(underTest.isAlive()).isFalse(); @@ -66,14 +66,14 @@ public class StopRequestWatcherImplTest { @Test public void watch_stop_command_if_enabled() throws Exception { enableSetting(true); - StopRequestWatcherImpl underTest = new StopRequestWatcherImpl(settings, listener, commands); + HardStopRequestWatcherImpl underTest = new HardStopRequestWatcherImpl(settings, listener, commands); underTest.setDelayMs(1L); underTest.startWatching(); assertThat(underTest.isAlive()).isTrue(); verify(listener, never()).run(); - when(commands.askedForStop()).thenReturn(true); + when(commands.askedForHardStop()).thenReturn(true); verify(listener, timeout(1_000L)).run(); underTest.stopWatching(); @@ -87,7 +87,7 @@ public class StopRequestWatcherImplTest { FileSystem fs = mock(FileSystem.class); when(fs.getTempDir()).thenReturn(temp.newFolder()); - StopRequestWatcherImpl underTest = StopRequestWatcherImpl.create(settings, listener, fs); + HardStopRequestWatcherImpl underTest = HardStopRequestWatcherImpl.create(settings, listener, fs); assertThat(underTest.getDelayMs()).isEqualTo(500L); } @@ -95,7 +95,7 @@ public class StopRequestWatcherImplTest { @Test public void stop_watching_commands_if_thread_is_interrupted() throws Exception { enableSetting(true); - StopRequestWatcherImpl underTest = new StopRequestWatcherImpl(settings, listener, commands); + HardStopRequestWatcherImpl underTest = new HardStopRequestWatcherImpl(settings, listener, commands); underTest.startWatching(); underTest.interrupt(); diff --git a/server/sonar-main/src/test/java/org/sonar/application/process/LifecycleTest.java b/server/sonar-main/src/test/java/org/sonar/application/process/LifecycleTest.java index b34a11a71f0..87fb0a27efd 100644 --- a/server/sonar-main/src/test/java/org/sonar/application/process/LifecycleTest.java +++ b/server/sonar-main/src/test/java/org/sonar/application/process/LifecycleTest.java @@ -24,8 +24,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; import org.junit.Test; -import org.sonar.application.process.Lifecycle; -import org.sonar.application.process.ProcessLifecycleListener; import org.sonar.process.ProcessId; import static java.util.Arrays.asList; @@ -33,7 +31,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.sonar.application.process.Lifecycle.State.INIT; import static org.sonar.application.process.Lifecycle.State.STARTED; import static org.sonar.application.process.Lifecycle.State.STARTING; -import static org.sonar.application.process.Lifecycle.State.STOPPING; +import static org.sonar.application.process.Lifecycle.State.HARD_STOPPING; public class LifecycleTest { @@ -70,10 +68,10 @@ public class LifecycleTest { public void can_move_to_STOPPING_from_STARTING_STARTED_only() { for (Lifecycle.State state : Lifecycle.State.values()) { TestLifeCycleListener listener = new TestLifeCycleListener(); - boolean tryToMoveTo = newLifeCycle(state, listener).tryToMoveTo(STOPPING); + boolean tryToMoveTo = newLifeCycle(state, listener).tryToMoveTo(HARD_STOPPING); if (state == STARTING || state == STARTED) { assertThat(tryToMoveTo).as("from state " + state).isTrue(); - assertThat(listener.states).containsOnly(STOPPING); + assertThat(listener.states).containsOnly(HARD_STOPPING); } else { assertThat(tryToMoveTo).as("from state " + state).isFalse(); assertThat(listener.states).isEmpty(); diff --git a/server/sonar-main/src/test/java/org/sonar/application/process/ProcessCommandsProcessMonitorTest.java b/server/sonar-main/src/test/java/org/sonar/application/process/ProcessCommandsProcessMonitorTest.java index b40add22f0d..7b57514186d 100644 --- a/server/sonar-main/src/test/java/org/sonar/application/process/ProcessCommandsProcessMonitorTest.java +++ b/server/sonar-main/src/test/java/org/sonar/application/process/ProcessCommandsProcessMonitorTest.java @@ -71,8 +71,8 @@ public class ProcessCommandsProcessMonitorTest { ProcessCommandsProcessMonitor underTest = new ProcessCommandsProcessMonitor(process, null, commands); - underTest.askForStop(); - verify(commands).askForStop(); + underTest.askForHardStop(); + verify(commands).askForHardStop(); underTest.acknowledgeAskForRestart(); verify(commands).acknowledgeAskForRestart(); diff --git a/server/sonar-main/src/test/java/org/sonar/application/process/SQProcessTest.java b/server/sonar-main/src/test/java/org/sonar/application/process/SQProcessTest.java index 01deedb6fc0..d8c8ab6fc8b 100644 --- a/server/sonar-main/src/test/java/org/sonar/application/process/SQProcessTest.java +++ b/server/sonar-main/src/test/java/org/sonar/application/process/SQProcessTest.java @@ -170,7 +170,7 @@ public class SQProcessTest { underTest.stopForcibly(); assertThat(underTest.getState()).isEqualTo(Lifecycle.State.STOPPED); - assertThat(testProcess.askedForStop).isFalse(); + assertThat(testProcess.askedForHardStop).isFalse(); assertThat(testProcess.destroyedForcibly).isTrue(); // second execution of stopForcibly does nothing. It's still stopped. @@ -189,18 +189,18 @@ public class SQProcessTest { try (TestProcess testProcess = new TestProcess()) { underTest.start(() -> testProcess); - Thread stopperThread = new Thread(() -> underTest.stop(1, TimeUnit.HOURS)); + Thread stopperThread = new Thread(() -> underTest.hardStop(1, TimeUnit.HOURS)); stopperThread.start(); // thread is blocked until process stopped assertThat(stopperThread.isAlive()).isTrue(); // wait for the stopper thread to ask graceful stop - while (!testProcess.askedForStop) { + while (!testProcess.askedForHardStop) { Thread.sleep(1L); } - assertThat(underTest.getState()).isEqualTo(Lifecycle.State.STOPPING); - verify(listener).onProcessState(A_PROCESS_ID, Lifecycle.State.STOPPING); + assertThat(underTest.getState()).isEqualTo(Lifecycle.State.HARD_STOPPING); + verify(listener).onProcessState(A_PROCESS_ID, Lifecycle.State.HARD_STOPPING); // process stopped testProcess.close(); @@ -223,10 +223,10 @@ public class SQProcessTest { try (TestProcess testProcess = new TestProcess()) { underTest.start(() -> testProcess); - underTest.stop(1L, TimeUnit.MILLISECONDS); + underTest.hardStop(1L, TimeUnit.MILLISECONDS); testProcess.waitFor(); - assertThat(testProcess.askedForStop).isTrue(); + assertThat(testProcess.askedForHardStop).isTrue(); assertThat(testProcess.destroyedForcibly).isTrue(); assertThat(testProcess.isAlive()).isFalse(); assertThat(underTest.getState()).isEqualTo(Lifecycle.State.STOPPED); @@ -265,7 +265,7 @@ public class SQProcessTest { private boolean streamsClosed = false; private boolean operational = false; private boolean askedForRestart = false; - private boolean askedForStop = false; + private boolean askedForHardStop = false; private boolean destroyedForcibly = false; @Override @@ -289,8 +289,8 @@ public class SQProcessTest { } @Override - public void askForStop() { - askedForStop = true; + public void askForHardStop() { + askedForHardStop = true; // do not stop, just asking } |