diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-05-10 20:11:32 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-05-10 20:22:18 +0200 |
commit | 06031995a5c01745cc425b569755b7ca37f9f832 (patch) | |
tree | d952992d017978a3b0e43d49605d128ad78905c0 | |
parent | 37610a9818a990bd6104d5b42c4e195f3106d89b (diff) |
Prefer allocating on host with latest OS
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java | 7 |
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; } |