summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2023-11-27 10:55:19 +0100
committerGitHub <noreply@github.com>2023-11-27 10:55:19 +0100
commit6a2c1a65086386b37862596ecf73d161e17b56e1 (patch)
tree197353937cd1dcf378800af9762e73d60202802a /node-repository
parentfbd789068d1fa8c0a726e85bb9f4efcb276e7523 (diff)
parent0d3c747d73f19281af0bbced663adbf192b88696 (diff)
Merge pull request #29458 from vespa-engine/hakonhall/keep-oldest-preprovisioned-hosts
Keep oldest preprovisioned hosts
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainer.java4
1 files changed, 4 insertions, 0 deletions
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<Optional<String>, List<Node>> currentNodesByParent = nodeRepository().nodes().list().stream().collect(groupingBy(Node::parentHostname));
List<Node> 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++;