diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-05-11 10:01:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-11 10:01:55 +0200 |
commit | 1ccefefdc6ce348398692f17bc8539c24e3cb7fb (patch) | |
tree | f891c2b9c9d6c322d740970e89be3b6f1a61e0a2 | |
parent | adcd97f02f2f0db9934d76265226bf705b64d34d (diff) | |
parent | 06031995a5c01745cc425b569755b7ca37f9f832 (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.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; } |