summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2018-10-30 10:00:12 +0100
committerGitHub <noreply@github.com>2018-10-30 10:00:12 +0100
commit82ecc01b82d313661330ed7c3876412296da6f93 (patch)
treec12e072268ffaa7856bde83e3240399245d5328e /node-repository
parentedee5b90c4a0b0bba89a801952ab4c883aa39b4b (diff)
parenta810ccb9ca8bfbb8cf8d2c2f69e0ad132134e4b0 (diff)
Merge pull request #7488 from vespa-engine/freva/fix-rebooter
Fix NodeRebooter
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java19
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) {