aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-05-28 14:28:28 +0200
committerMartin Polden <mpolden@mpolden.no>2021-05-28 14:28:28 +0200
commitab25e8c8ee2c6aa4fcb01d3960cc3bfb1756bf9c (patch)
treeb0dc65e86a90c1f2961bd8fa064279db35fd02d5 /node-repository
parentfee4e16c50bb4ee5e79c487a6c976448509d6c4b (diff)
Restart once
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypterTest.java4
2 files changed, 8 insertions, 2 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java
index 79fc72bfa36..d37343f2c75 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java
@@ -99,7 +99,11 @@ public class HostEncrypter extends NodeRepositoryMaintainer {
/** Trigger restart of encrypting nodes to allow disk encryption to happen */
private void triggerRestart(NodeList allNodes, NodeType nodeType) {
- NodeList hostsReadyToEncrypt = allNodes.nodeType(nodeType).state(Node.State.parked).encrypting();
+ NodeList hostsReadyToEncrypt = allNodes.nodeType(nodeType)
+ .state(Node.State.parked)
+ .encrypting()
+ .not().matching(node -> node.allocation().isPresent() &&
+ node.allocation().get().restartGeneration().pending());
nodeRepository().nodes().restart(NodeListFilter.from(hostsReadyToEncrypt.asList()));
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypterTest.java
index be0a7a84025..4df7526c07f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypterTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypterTest.java
@@ -127,6 +127,7 @@ public class HostEncrypterTest {
replaceNodes(infraApplication, (application) -> tester.prepareAndActivateInfraApplication(application, NodeType.host));
// Trigger restart of parked nodes
encrypter.maintain();
+ encrypter.maintain(); // Trigger restart only once
}
private void completeEncryptionOf(List<Node> nodes) {
@@ -134,7 +135,8 @@ public class HostEncrypterTest {
parkRetiredHosts();
List<Node> patchedNodes = tester.patchNodes(nodes, (node) -> {
assertSame(Node.State.parked, node.state());
- assertTrue(node + " has restart pending", node.allocation().get().restartGeneration().pending());
+ assertEquals(node + " has restart pending", 1,
+ node.allocation().get().restartGeneration().wanted() - node.allocation().get().restartGeneration().current());
assertTrue(node + " wants to encrypt", node.reports().getReport(Report.WANT_TO_ENCRYPT_ID).isPresent());
return node.with(node.reports().withReport(Report.basicReport(Report.DISK_ENCRYPTED_ID,
Report.Type.UNSPECIFIED,