From 0d3c747d73f19281af0bbced663adbf192b88696 Mon Sep 17 00:00:00 2001 From: HÃ¥kon Hallingstad Date: Fri, 24 Nov 2023 16:08:23 +0100 Subject: Keep oldest preprovisioned hosts --- .../vespa/hosted/provision/maintenance/HostCapacityMaintainer.java | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'node-repository/src') diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainer.java index 226f5834b66..98f0dfebc4a 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainer.java @@ -36,6 +36,7 @@ import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningThrottler; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; +import java.util.Comparator; import java.util.EnumSet; import java.util.List; import java.util.Map; @@ -112,6 +113,9 @@ public class HostCapacityMaintainer extends NodeRepositoryMaintainer { Map, List> currentNodesByParent = nodeRepository().nodes().list().stream().collect(groupingBy(Node::parentHostname)); List candidateHosts = new ArrayList<>(getHosts(currentNodesByParent)); candidateHosts.retainAll(typeEmptyHosts); + // Deprovision newly provisioned hosts before older to reduce churn + candidateHosts.sort(Comparator.comparing((Node node) -> node.history().event(History.Event.Type.provisioned).map(History.Event::at).orElse(Instant.now())) + .reversed()); for (Node host : candidateHosts) { attempts++; -- cgit v1.2.3