diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2018-10-29 16:59:13 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerij92@gmail.com> | 2018-10-29 20:00:52 +0100 |
commit | 89fc651bd6d880c98ee2b6c747a02626d93c8e9f (patch) | |
tree | 80b257014d009f7f993341e93cffc30f787d1835 /node-repository | |
parent | 3caf9568a1c69b4ce79b4df6d9fcaeb313cd80d8 (diff) |
Fix NodeRebooter
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java index 4b2fcbcb257..a83340d633c 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.maintenance; -import com.yahoo.config.provision.NodeType; +import com.yahoo.config.provision.Flavor; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeRepository; import com.yahoo.vespa.hosted.provision.node.History; @@ -9,8 +9,10 @@ import com.yahoo.vespa.hosted.provision.node.filter.NodeListFilter; import java.time.Clock; import java.time.Duration; +import java.util.Arrays; import java.util.List; import java.util.Random; +import java.util.stream.Collectors; /** * This schedules periodic reboot of all nodes. @@ -35,14 +37,15 @@ public class NodeRebooter extends Maintainer { @Override protected void maintain() { // Reboot candidates: Nodes in long-term states, which we know can safely orchestrate a reboot - List<Node> rebootCandidates = nodeRepository().getNodes(NodeType.tenant, Node.State.active, Node.State.ready); - rebootCandidates.addAll(nodeRepository().getNodes(NodeType.proxy, Node.State.active, Node.State.ready)); - rebootCandidates.addAll(nodeRepository().getNodes(NodeType.host, Node.State.active, Node.State.ready)); + List<Node.State> targetStates = Arrays.asList(Node.State.active, Node.State.ready); + List<Node> nodesToReboot = nodeRepository().getNodes().stream() + .filter(node -> targetStates.contains(node.state())) + .filter(node -> node.flavor().getType() != Flavor.Type.DOCKER_CONTAINER) + .filter(this::shouldReboot) + .collect(Collectors.toList()); - for (Node node : rebootCandidates) { - if (shouldReboot(node)) - nodeRepository().reboot(NodeListFilter.from(node)); - } + if (!nodesToReboot.isEmpty()) + nodeRepository().reboot(NodeListFilter.from(nodesToReboot)); } private boolean shouldReboot(Node node) { |