diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-06-01 16:13:34 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-06-01 16:13:34 +0200 |
commit | 904976d65e9ef051351a27c133506034f26f001f (patch) | |
tree | 7d97d952dfef147d651bc416f21d65ae975e7ec0 /node-repository | |
parent | 81a030c3131bb11bbc24bc868ea659201e6ec1cb (diff) |
Skip restart when encrypting hosts
Diffstat (limited to 'node-repository')
2 files changed, 2 insertions, 23 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 3fcbb33af1e..caf20463f60 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 @@ -11,7 +11,6 @@ import com.yahoo.vespa.hosted.provision.NodeList; import com.yahoo.vespa.hosted.provision.NodeRepository; import com.yahoo.vespa.hosted.provision.node.Agent; import com.yahoo.vespa.hosted.provision.node.ClusterId; -import com.yahoo.vespa.hosted.provision.node.filter.NodeListFilter; import java.time.Duration; import java.time.Instant; @@ -51,7 +50,6 @@ public class HostEncrypter extends NodeRepositoryMaintainer { if (!nodeType.isHost()) continue; if (upgradingVespa(allNodes, nodeType)) continue; unencryptedHosts(allNodes, nodeType).forEach(host -> encrypt(host, now)); - triggerRestart(allNodes, nodeType); } return true; } @@ -106,16 +104,6 @@ public class HostEncrypter extends NodeRepositoryMaintainer { return Math.max(0, limit - hosts.encrypting().size()); } - /** 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() - .not().matching(node -> node.allocation().isPresent() && - node.allocation().get().restartGeneration().pending()); - nodeRepository().nodes().restart(NodeListFilter.from(hostsReadyToEncrypt.asList())); - } - private void encrypt(Node host, Instant now) { LOG.info("Retiring and encrypting " + host); nodeRepository().nodes().encrypt(host.hostname(), Agent.HostEncrypter, now); 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 010fc40ded7..5cae181f87d 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 @@ -122,21 +122,12 @@ public class HostEncrypterTest { tester.prepareAndActivateInfraApplication(infraApplication, NodeType.host); } - private void parkRetiredHosts() { - // Redeploy to park retired hosts - 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) { Instant now = tester.clock().instant(); - parkRetiredHosts(); + // Redeploy to park retired hosts + replaceNodes(infraApplication, (application) -> tester.prepareAndActivateInfraApplication(application, NodeType.host)); List<Node> patchedNodes = tester.patchNodes(nodes, (node) -> { assertSame(Node.State.parked, node.state()); - 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, |