summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-12-09 21:12:44 +0100
committerJon Marius Venstad <venstad@gmail.com>2020-12-09 21:12:44 +0100
commitc8f8e85351b70a02b9915b6978dd05e1c2cc55c7 (patch)
treeccd03852e91dfd64838ac3d46e3ed00084f34188 /controller-server
parent0107067c0a9c29dd4e60231ad79e35786c390626 (diff)
Split (async) shutdown and (sync) wait for it, and use lists in all maintainer owners
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java7
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java7
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggerer.java2
3 files changed, 12 insertions, 4 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java
index 06e489c7f58..6266e8da57e 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.controller.maintenance;
import com.google.inject.Inject;
import com.yahoo.component.AbstractComponent;
+import com.yahoo.concurrent.maintenance.Maintainer;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.jdisc.Metric;
@@ -14,6 +15,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
import static java.time.temporal.ChronoUnit.HOURS;
@@ -30,7 +32,7 @@ import static java.time.temporal.ChronoUnit.SECONDS;
public class ControllerMaintenance extends AbstractComponent {
private final Upgrader upgrader;
- private final List<ControllerMaintainer> maintainers = new ArrayList<>();
+ private final List<Maintainer> maintainers = new CopyOnWriteArrayList<>();
@Inject
@SuppressWarnings("unused") // instantiated by Dependency Injection
@@ -68,7 +70,8 @@ public class ControllerMaintenance extends AbstractComponent {
@Override
public void deconstruct() {
- maintainers.forEach(ControllerMaintainer::close);
+ maintainers.forEach(Maintainer::shutdown);
+ maintainers.forEach(Maintainer::close);
}
/** Create one OS upgrader per cloud found in the zone registry of controller */
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
index f08a23ab8ed..8823959fb9b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
@@ -56,9 +56,14 @@ public class JobRunner extends ControllerMaintainer {
}
@Override
+ public void shutdown() {
+ super.shutdown();
+ executors.shutdown();
+ }
+
+ @Override
public void close() {
super.close();
- executors.shutdown();
try {
if ( ! executors.awaitTermination(10, TimeUnit.SECONDS)) {
executors.shutdownNow();
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggerer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggerer.java
index 11d3962a7d6..96e9f087a67 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggerer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggerer.java
@@ -65,7 +65,7 @@ public class ReindexingTriggerer extends ControllerMaintainer {
static Duration offset(ApplicationId id, ZoneId zone) {
double relativeOffset = ((id.serializedForm() + zone.value()).hashCode() & (-1 >>> 1)) / (double) (-1 >>> 1);
- return Duration.ofMillis((long) (reindexingPeriod.toMillis() * (relativeOffset)));
+ return Duration.ofMillis((long) (reindexingPeriod.toMillis() * relativeOffset));
}
static boolean reindexingIsReady(ApplicationReindexing reindexing, Instant now) {