summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2022-11-16 10:51:54 +0100
committerGitHub <noreply@github.com>2022-11-16 10:51:54 +0100
commitbd281f83956c62cc0e42e328c4bac5b338e1f1cf (patch)
treeab407e6b8009bc4e8d13cd52622a56689afed772
parentaca412ef32b88f16d4e4b7bc35aedca831b36f93 (diff)
parent558b3393d72da3e9f1de2b36ebbb06ca210c2154 (diff)
Merge pull request #24883 from vespa-engine/mpolden/retire-arm
Always retire arm64 hosts on OS upgrade
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java5
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostResumeProvisionerTest.java1
3 files changed, 7 insertions, 5 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java
index 6b61c864a0c..bb9d28d48f9 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java
@@ -68,8 +68,10 @@ public class RebuildingOsUpgrader implements OsUpgrader {
private List<Node> rebuildableHosts(OsVersionTarget target, NodeList allNodes, Instant now) {
NodeList hostsOfTargetType = allNodes.nodeType(target.nodeType());
if (softRebuild) {
- // Soft rebuild is enabled so this should only act on hosts with remote storage
- hostsOfTargetType = hostsOfTargetType.storageType(NodeResources.StorageType.remote);
+ // Soft rebuild is enabled so this should only act on hosts with remote storage and on x86-64
+ // TODO(mpolden): Rebuild arm64 hosts as well if image permissions can be fixed
+ hostsOfTargetType = hostsOfTargetType.matching(node -> node.resources().storageType() == NodeResources.StorageType.remote &&
+ node.resources().architecture() == NodeResources.Architecture.x86_64);
}
int rebuildLimit = rebuildLimit(target.nodeType(), hostsOfTargetType);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java
index 72ab26f71a7..acdb689b809 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java
@@ -62,8 +62,9 @@ public class RetiringOsUpgrader implements OsUpgrader {
private NodeList candidates(Instant instant, OsVersionTarget target, NodeList allNodes) {
NodeList activeNodes = allNodes.state(Node.State.active).nodeType(target.nodeType());
if (softRebuild) {
- // Soft rebuild is enabled, so this should only act on hosts with local storage
- activeNodes = activeNodes.storageType(NodeResources.StorageType.local);
+ // Soft rebuild is enabled, so this should only act on hosts with local storage, or non-x86-64
+ activeNodes = activeNodes.matching(node -> node.resources().storageType() == NodeResources.StorageType.local ||
+ node.resources().architecture() != NodeResources.Architecture.x86_64);
}
if (activeNodes.isEmpty()) return NodeList.of();
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostResumeProvisionerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostResumeProvisionerTest.java
index 18a756d4411..bf51d80877c 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostResumeProvisionerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostResumeProvisionerTest.java
@@ -74,7 +74,6 @@ public class HostResumeProvisionerTest {
Supplier<NodeList> provisioning = () -> tester.nodeRepository().nodes().list(Node.State.provisioned).nodeType(NodeType.host);
assertEquals(1, provisioning.get().size());
- provisioning.get().forEach(h -> System.out.println(h.hostname() + " " + h.ipConfig()));
hostResumeProvisioner.maintain();
assertTrue("No IP addresses written as DNS updates are failing",