summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2021-11-11 16:13:27 +0100
committerGitHub <noreply@github.com>2021-11-11 16:13:27 +0100
commit353e6989d19641ddb33b845a558352b159cf4c21 (patch)
tree37045c50a48d1f79b6eefaa1c6675726a61d46e5 /controller-server
parentda12f4687c2f9b46cf04bbd328eb33df79e3acac (diff)
parent420a0079965cc568800fe14df1dd59e261cad6c2 (diff)
Merge pull request #19979 from vespa-engine/mpolden/skip-deprovision
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
*