diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2021-11-11 16:13:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-11 16:13:27 +0100 |
commit | 353e6989d19641ddb33b845a558352b159cf4c21 (patch) | |
tree | 37045c50a48d1f79b6eefaa1c6675726a61d46e5 | |
parent | da12f4687c2f9b46cf04bbd328eb33df79e3acac (diff) | |
parent | 420a0079965cc568800fe14df1dd59e261cad6c2 (diff) |
Merge pull request #19979 from vespa-engine/mpolden/skip-deprovision
Skip node when already deprovisioning
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 * |