diff options
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java | 11 |
1 files changed, 8 insertions, 3 deletions
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 9e931463999..f56e75518a3 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 @@ -53,6 +53,7 @@ public abstract class OsUpgrader { /** Returns whether node can upgrade to version at given instant */ final boolean canUpgradeTo(Version version, Instant instant, Node node) { + if (deferringUpgrade(node, instant)) return false; Set<Version> versions = nodeRepository.osVersions().availableTo(node, version); boolean versionAvailable = versions.contains(version); if (!versionAvailable) { @@ -60,9 +61,13 @@ public abstract class OsUpgrader { version.toFullString() + ", but this version does not exist in " + node.cloudAccount() + ". Found " + versions.stream().sorted().toList()); } - return versionAvailable && - (node.status().osVersion().downgrading() || // Fast-track downgrades - node.history().age(instant).compareTo(gracePeriod()) > 0); + return versionAvailable; + } + + /** Returns whether node is deferring upgrade at given instant */ + final boolean deferringUpgrade(Node node, Instant instant) { + return !node.status().osVersion().downgrading() && // Never defer downgrades + node.history().age(instant).compareTo(gracePeriod()) <= 0; } /** The duration this leaves new nodes alone before scheduling any upgrade */ |