diff options
author | Martin Polden <mpolden@mpolden.no> | 2023-07-19 13:10:56 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2023-07-20 10:21:27 +0200 |
commit | ec191d52a8529a96d83f9fee56febef6ab10af58 (patch) | |
tree | 393095291424d1aa6f874a90b588273f14c465a2 /node-repository | |
parent | 05b89413eb8a47a24b8e16255d68b42f0f5549b3 (diff) |
Ignore grace period when downgrading
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/OsVersion.java | 5 | ||||
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/OsVersion.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/OsVersion.java index 2e0e780182b..ffb9477c88e 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/OsVersion.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/OsVersion.java @@ -43,6 +43,11 @@ public class OsVersion { return wanted.isPresent() && !current.equals(wanted); } + /** Returns whether this node is downgrading its version */ + public boolean downgrading() { + return (wanted.isPresent() && current.isPresent()) && wanted.get().isBefore(current.get()); + } + /** Returns whether this is before the given version */ public boolean isBefore(Version version) { return current.isEmpty() || current.get().isBefore(version); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java index 5def863113c..d54b40f17de 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java @@ -45,7 +45,8 @@ public abstract class OsUpgrader { /** Returns whether node can upgrade at given instant */ final boolean canUpgradeAt(Instant instant, Node node) { - return node.history().age(instant).compareTo(gracePeriod()) > 0; + return node.status().osVersion().downgrading() || // Fast-track downgrades + node.history().age(instant).compareTo(gracePeriod()) > 0; } /** The duration this leaves new nodes alone before scheduling any upgrade */ |