diff options
author | Jon Bratseth <bratseth@gmail.com> | 2020-04-17 11:14:31 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2020-04-17 11:14:31 +0200 |
commit | f70e2a33306b5367b3817666219bb23648531ef2 (patch) | |
tree | 1a032d2f858fc8dd7ea2c69e2e55673bd3aca363 /node-repository | |
parent | 1d8f3d526b87b59a345c1877272430adb4bf810c (diff) |
Prefer to unretire nodes we don't want to retire
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java index a5bc946f45a..97844bba0b0 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java @@ -323,7 +323,7 @@ class NodeAllocation { } } else if (deltaRetiredCount < 0) { // unretire until deltaRetiredCount is 0 - for (PrioritizableNode node : byIncreasingIndex(nodes)) { + for (PrioritizableNode node : byUnretiringPriority(nodes)) { if ( node.node.allocation().get().membership().retired() && ( hasCompatibleFlavor(node) || node.isResizable) ) { if (node.isResizable) node.node = resize(node.node); @@ -337,7 +337,7 @@ class NodeAllocation { // Set whether the node is exclusive Allocation allocation = node.node.allocation().get(); node.node = node.node.with(allocation.with(allocation.membership() - .with(allocation.membership().cluster().exclusive(requestedNodes.isExclusive())))); + .with(allocation.membership().cluster().exclusive(requestedNodes.isExclusive())))); } return nodes.stream().map(n -> n.node).collect(Collectors.toList()); @@ -368,8 +368,12 @@ class NodeAllocation { return nodes.stream().sorted(nodeIndexComparator().reversed()).collect(Collectors.toList()); } - private List<PrioritizableNode> byIncreasingIndex(Set<PrioritizableNode> nodes) { - return nodes.stream().sorted(nodeIndexComparator()).collect(Collectors.toList()); + /** Prefer to unretire nodes we don't want to retire, and otherwise those with lower index */ + private List<PrioritizableNode> byUnretiringPriority(Set<PrioritizableNode> nodes) { + return nodes.stream() + .sorted(Comparator.comparing((PrioritizableNode n) -> n.node.status().wantToRetire()) + .thenComparing(n -> n.node.allocation().get().membership().index())) + .collect(Collectors.toList()); } private Comparator<PrioritizableNode> nodeIndexComparator() { |