diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2018-10-30 10:00:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-30 10:00:12 +0100 |
commit | 82ecc01b82d313661330ed7c3876412296da6f93 (patch) | |
tree | c12e072268ffaa7856bde83e3240399245d5328e /node-repository/src | |
parent | edee5b90c4a0b0bba89a801952ab4c883aa39b4b (diff) | |
parent | a810ccb9ca8bfbb8cf8d2c2f69e0ad132134e4b0 (diff) |
Merge pull request #7488 from vespa-engine/freva/fix-rebooter
Fix NodeRebooter
Diffstat (limited to 'node-repository/src')
-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..8f30394a239 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.EnumSet; 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)); + EnumSet<Node.State> targetStates = EnumSet.of(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) { |