diff options
author | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-03-11 16:30:17 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-03-11 16:30:17 +0100 |
commit | 9a9c60175571b11cc113b546c6d61b9c0ba85181 (patch) | |
tree | c3e09c618bf2b32a4b9dc1bcb05c917196aa8b43 /node-repository | |
parent | d3a6934b2fae1c7f04d7bd13e9c6a18b31098ede (diff) |
Allow allocating to non-active hosts with dynamic provisioning
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java index 861e1062d66..5a3f0380fa2 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java @@ -16,6 +16,7 @@ import com.yahoo.vespa.hosted.provision.persistence.NameResolver; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.EnumSet; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -121,7 +122,7 @@ class NodePrioritizer { * already have nodes allocated to this tenant */ void addNewDockerNodes(Mutex allocationLock, boolean exclusively) { - NodeList candidates = allNodes; + NodeList candidates; if (exclusively) { Set<String> candidateHostnames = allNodes.asList().stream() @@ -130,7 +131,12 @@ class NodePrioritizer { .flatMap(node -> node.parentHostname().stream()) .collect(Collectors.toSet()); - candidates = candidates.filter(node -> candidateHostnames.contains(node.hostname())); + candidates = allNodes + .filter(node -> candidateHostnames.contains(node.hostname())) + .filter(node -> EnumSet.of(Node.State.provisioned, Node.State.ready, Node.State.active) + .contains(node.state())); + } else { + candidates = allNodes.state(Node.State.active); } addNewDockerNodesOn(allocationLock, candidates); @@ -142,7 +148,6 @@ class NodePrioritizer { for (Node node : candidates) { if (node.type() != NodeType.host) continue; - if (node.state() != Node.State.active) continue; if (node.status().wantToRetire()) continue; boolean hostHasCapacityForWantedFlavor = capacity.hasCapacity(node, wantedResourceCapacity); |