aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-07-19 13:10:56 +0200
committerMartin Polden <mpolden@mpolden.no>2023-07-20 10:21:27 +0200
commitec191d52a8529a96d83f9fee56febef6ab10af58 (patch)
tree393095291424d1aa6f874a90b588273f14c465a2
parent05b89413eb8a47a24b8e16255d68b42f0f5549b3 (diff)
Ignore grace period when downgrading
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/OsVersion.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java3
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 */