aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorDuarte Meneses <duarte.meneses@sonarsource.com>2017-10-31 16:02:49 +0100
committerDuarte Meneses <duarte.meneses@sonarsource.com>2017-11-06 15:28:51 +0100
commit7b64b5d27664c32bcca218cfbd2f89eb2dff845f (patch)
tree9414e07ba494ae7586e2f1d94e989696444c99db /server
parentf0971e50be1c27fa9f8b45e8274dc7fbde55be39 (diff)
downloadsonarqube-7b64b5d27664c32bcca218cfbd2f89eb2dff845f.tar.gz
sonarqube-7b64b5d27664c32bcca218cfbd2f89eb2dff845f.zip
SONAR-10026 Simplify running flag
Diffstat (limited to 'server')
-rw-r--r--server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeProcessingSchedulerImpl.java53
1 files changed, 22 insertions, 31 deletions
diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeProcessingSchedulerImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeProcessingSchedulerImpl.java
index 12b376398fc..c3549ca18d3 100644
--- a/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeProcessingSchedulerImpl.java
+++ b/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeProcessingSchedulerImpl.java
@@ -24,7 +24,6 @@ import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListenableScheduledFuture;
import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import org.sonar.api.utils.log.Logger;
@@ -104,7 +103,7 @@ public class CeProcessingSchedulerImpl implements CeProcessingScheduler {
}
private class ChainingCallback implements FutureCallback<CeWorker.Result> {
- private final AtomicBoolean keepRunning = new AtomicBoolean(true);
+ private volatile boolean keepRunning = true;
private final CeWorker worker;
@CheckForNull
@@ -116,19 +115,21 @@ public class CeProcessingSchedulerImpl implements CeProcessingScheduler {
@Override
public void onSuccess(@Nullable CeWorker.Result result) {
- if (result == null) {
- chainWithEnabledTaskDelay();
- } else {
- switch (result) {
- case DISABLED:
- chainWithDisabledTaskDelay();
- break;
- case NO_TASK:
- chainWithEnabledTaskDelay();
- break;
- case TASK_PROCESSED:
- default:
- chainWithoutDelay();
+ if (keepRunning) {
+ if (result == null) {
+ chainWithEnabledTaskDelay();
+ } else {
+ switch (result) {
+ case DISABLED:
+ chainWithDisabledTaskDelay();
+ break;
+ case NO_TASK:
+ chainWithEnabledTaskDelay();
+ break;
+ case TASK_PROCESSED:
+ default:
+ chainWithoutDelay();
+ }
}
}
}
@@ -137,44 +138,34 @@ public class CeProcessingSchedulerImpl implements CeProcessingScheduler {
public void onFailure(Throwable t) {
if (t instanceof Error) {
LOG.error("Compute Engine execution failed. Scheduled processing interrupted.", t);
- } else {
+ } else if (keepRunning) {
chainWithoutDelay();
}
}
private void chainWithoutDelay() {
- if (keepRunning()) {
- workerFuture = executorService.submit(worker);
- }
+ workerFuture = executorService.submit(worker);
addCallback();
}
private void chainWithEnabledTaskDelay() {
- if (keepRunning()) {
- workerFuture = executorService.schedule(worker, delayBetweenEnabledTasks, timeUnit);
- }
+ workerFuture = executorService.schedule(worker, delayBetweenEnabledTasks, timeUnit);
addCallback();
}
private void chainWithDisabledTaskDelay() {
- if (keepRunning()) {
- workerFuture = executorService.schedule(worker, DELAY_BETWEEN_DISABLED_TASKS, timeUnit);
- }
+ workerFuture = executorService.schedule(worker, DELAY_BETWEEN_DISABLED_TASKS, timeUnit);
addCallback();
}
private void addCallback() {
- if (workerFuture != null && keepRunning()) {
+ if (workerFuture != null) {
Futures.addCallback(workerFuture, this);
}
}
- private boolean keepRunning() {
- return keepRunning.get();
- }
-
public void stop(boolean interrupt) {
- this.keepRunning.set(false);
+ keepRunning = false;
if (workerFuture != null) {
workerFuture.cancel(interrupt);
}