diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-05-28 14:28:28 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-05-28 14:28:28 +0200 |
commit | ab25e8c8ee2c6aa4fcb01d3960cc3bfb1756bf9c (patch) | |
tree | b0dc65e86a90c1f2961bd8fa064279db35fd02d5 /node-repository | |
parent | fee4e16c50bb4ee5e79c487a6c976448509d6c4b (diff) |
Restart once
Diffstat (limited to 'node-repository')
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, |