aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-main/src
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2019-05-02 12:26:06 +0200
committerSonarTech <sonartech@sonarsource.com>2019-06-03 20:21:19 +0200
commit0e90581357a2a9e0a8604246b121a98e4d30d646 (patch)
tree79dcea0792542a4ae9cf892fdade9e352425ce7c /server/sonar-main/src
parentd803a7b56badb25efe47ee26e842d7196ba7a419 (diff)
downloadsonarqube-0e90581357a2a9e0a8604246b121a98e4d30d646.tar.gz
sonarqube-0e90581357a2a9e0a8604246b121a98e4d30d646.zip
SONAR-12043 rename current shutdown code from stop to hardStop
Diffstat (limited to 'server/sonar-main/src')
-rw-r--r--server/sonar-main/src/main/java/org/sonar/application/Scheduler.java2
-rw-r--r--server/sonar-main/src/main/java/org/sonar/application/SchedulerImpl.java56
-rw-r--r--server/sonar-main/src/main/java/org/sonar/application/process/EsProcessMonitor.java2
-rw-r--r--server/sonar-main/src/main/java/org/sonar/application/process/HardStopRequestWatcherImpl.java (renamed from server/sonar-main/src/main/java/org/sonar/application/process/StopRequestWatcherImpl.java)12
-rw-r--r--server/sonar-main/src/main/java/org/sonar/application/process/Lifecycle.java10
-rw-r--r--server/sonar-main/src/main/java/org/sonar/application/process/ProcessCommandsProcessMonitor.java6
-rw-r--r--server/sonar-main/src/main/java/org/sonar/application/process/ProcessMonitor.java4
-rw-r--r--server/sonar-main/src/main/java/org/sonar/application/process/SQProcess.java21
-rw-r--r--server/sonar-main/src/test/java/org/sonar/application/SchedulerImplTest.java22
-rw-r--r--server/sonar-main/src/test/java/org/sonar/application/process/HardStopRequestWatcherImplTest.java (renamed from server/sonar-main/src/test/java/org/sonar/application/process/StopRequestWatcherImplTest.java)12
-rw-r--r--server/sonar-main/src/test/java/org/sonar/application/process/LifecycleTest.java8
-rw-r--r--server/sonar-main/src/test/java/org/sonar/application/process/ProcessCommandsProcessMonitorTest.java4
-rw-r--r--server/sonar-main/src/test/java/org/sonar/application/process/SQProcessTest.java20
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
}