summaryrefslogtreecommitdiffstats
path: root/node-repository/src/main
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2020-08-28 13:45:32 +0200
committerGitHub <noreply@github.com>2020-08-28 13:45:32 +0200
commit1506771a5857ab341ed5367228abcca322c0ad50 (patch)
treecc1cef6fa11ae1c5eddb1354e44c1550e3c50f18 /node-repository/src/main
parent1bec5243afafe637abafed21600ef11e997cd7b8 (diff)
parent7687b5801d1476314ada3b3f647831b84741959e (diff)
Merge pull request #14192 from vespa-engine/mpolden/never-downgrade
Never attempt to downgrade OS
Diffstat (limited to 'node-repository/src/main')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivator.java4
-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/DelegatingUpgrader.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java2
5 files changed, 14 insertions, 4 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
index cbc5a44ae94..ad85235fc69 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
@@ -96,6 +96,11 @@ public class NodeList extends AbstractFilteringList<Node, NodeList> {
.orElse(Version.emptyVersion)));
}
+ /** Returns the subset of nodes that are currently on a lower version than the given version */
+ public NodeList osVersionIsBefore(Version version) {
+ return matching(node -> node.status().osVersion().isBefore(version));
+ }
+
/** Returns the subset of nodes that are currently on the given OS version */
public NodeList onOsVersion(Version version) {
return matching(node -> node.status().osVersion().matches(version));
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivator.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivator.java
index be1190ccff4..0e3b6715ff1 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivator.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivator.java
@@ -26,8 +26,8 @@ public class OsUpgradeActivator extends NodeRepositoryMaintainer {
protected boolean maintain() {
for (var nodeType : NodeType.values()) {
if (!nodeType.isHost()) continue;
- var active = canUpgradeOsOf(nodeType);
- nodeRepository().osVersions().resumeUpgradeOf(nodeType, active);
+ boolean resume = canUpgradeOsOf(nodeType);
+ nodeRepository().osVersions().resumeUpgradeOf(nodeType, resume);
}
return true;
}
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 1216c060181..0385e2e3df6 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 is before the given version */
+ public boolean isBefore(Version version) {
+ return current.isEmpty() || current.get().isBefore(version);
+ }
+
/** Returns whether current version matches given version */
public boolean matches(Version version) {
return current.isPresent() && current.get().equals(version);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/DelegatingUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/DelegatingUpgrader.java
index 03d04a5f6cf..74b288d77c5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/DelegatingUpgrader.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/DelegatingUpgrader.java
@@ -38,7 +38,7 @@ public class DelegatingUpgrader implements Upgrader {
NodeList activeNodes = nodeRepository.list().nodeType(target.nodeType()).state(Node.State.active);
int numberToUpgrade = Math.max(0, maxActiveUpgrades - activeNodes.changingOsVersionTo(target.version()).size());
NodeList nodesToUpgrade = activeNodes.not().changingOsVersionTo(target.version())
- .not().onOsVersion(target.version())
+ .osVersionIsBefore(target.version())
.byIncreasingOsVersion()
.first(numberToUpgrade);
if (nodesToUpgrade.size() == 0) return;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java
index aebf14ab13f..b4e21b22cd2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java
@@ -46,7 +46,7 @@ public class RetiringUpgrader implements Upgrader {
Instant retiredAt = target.lastRetiredAt().orElse(Instant.EPOCH);
if (now.isBefore(retiredAt.plus(nodeBudget))) return; // Budget has not been spent yet
- activeNodes.not().onOsVersion(target.version())
+ activeNodes.osVersionIsBefore(target.version())
.not().deprovisioning()
.byIncreasingOsVersion()
.first(1)