diff options
author | HÃ¥kon Hallingstad <hakon@verizonmedia.com> | 2021-06-01 17:42:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-01 17:42:18 +0200 |
commit | d0154621170d86bbca5532ffd406cb62cbb3fa53 (patch) | |
tree | 6b0a7bfc82d76bd83414621651b1df279ab5924c | |
parent | dda71217f832eda60f88cc0b663d3e7b1021b1a1 (diff) | |
parent | 904976d65e9ef051351a27c133506034f26f001f (diff) |
Merge pull request #18075 from vespa-engine/mpolden/skip-restart
Skip restart when encrypting hosts
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, |