summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-05-11 10:01:55 +0200
committerGitHub <noreply@github.com>2021-05-11 10:01:55 +0200
commit1ccefefdc6ce348398692f17bc8539c24e3cb7fb (patch)
treef891c2b9c9d6c322d740970e89be3b6f1a61e0a2
parentadcd97f02f2f0db9934d76265226bf705b64d34d (diff)
parent06031995a5c01745cc425b569755b7ca37f9f832 (diff)
Merge pull request #17811 from vespa-engine/mpolden/prefer-latest-os
Prefer allocating on host with latest OS
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
index 5adde885276..a364c42eee3 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
+import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.Flavor;
@@ -193,6 +194,12 @@ public abstract class NodeCandidate implements Nodelike, Comparable<NodeCandidat
return Integer.compare(this.allocation().get().membership().index(),
other.allocation().get().membership().index());
+ // Prefer host with latest OS version
+ Version thisHostOsVersion = this.parent.flatMap(host -> host.status().osVersion().current()).orElse(Version.emptyVersion);
+ Version otherHostOsVersion = other.parent.flatMap(host -> host.status().osVersion().current()).orElse(Version.emptyVersion);
+ if (thisHostOsVersion.isAfter(otherHostOsVersion)) return -1;
+ if (otherHostOsVersion.isAfter(thisHostOsVersion)) return 1;
+
return 0;
}