summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-11-11 15:59:31 +0100
committerMartin Polden <mpolden@mpolden.no>2021-11-11 15:59:31 +0100
commit420a0079965cc568800fe14df1dd59e261cad6c2 (patch)
tree6b87568a7284b12492ac9c09505cd45f29ef910b /controller-server
parent9c5c41e68a5b3166c4d0d8cac98ac5763957878a (diff)
Skip node when already deprovisioning
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java1
2 files changed, 3 insertions, 3 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java
index 34f41ce2784..98e9fc7c159 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java
@@ -55,7 +55,7 @@ public class CloudEventTracker extends ControllerMaintainer {
private void deprovisionAffectedHosts(String region, CloudEvent event) {
for (var zone : zonesByCloudNativeRegion.get(region)) {
for (var node : nodeRepository.list(zone.getId(), NodeFilter.all())) {
- if (!affects(node, event)) continue;
+ if (!deprovision(node, event)) continue;
log.info("Retiring and deprovisioning " + node.hostname().value() + " in " + zone.getId() +
": Affected by maintenance event " + event.instanceEventId);
nodeRepository.retire(zone.getId(), node.hostname().value(), true, true);
@@ -63,8 +63,9 @@ public class CloudEventTracker extends ControllerMaintainer {
}
}
- private static boolean affects(Node node, CloudEvent event) {
+ private static boolean deprovision(Node node, CloudEvent event) {
if (!node.type().isHost()) return false; // Non-hosts are never affected
+ if (node.wantToRetire() && node.wantToDeprovision()) return false; // Already deprovisioning
return event.affectedInstances.stream()
.anyMatch(instance -> node.hostname().value().contains(instance));
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java
index f0aef75bb11..8daedc05e96 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java
@@ -31,7 +31,6 @@ public class CloudEventTrackerTest {
private final ZoneApiMock zone1 = createZone("prod.zone1", "region-1", "aws");
private final ZoneApiMock zone2 = createZone("prod.zone2", "region-2", "aws");
-
/**
* Test scenario: Consider three zones, two of which are supported
*