aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2022-01-12 16:02:21 +0100
committerGitHub <noreply@github.com>2022-01-12 16:02:21 +0100
commitbec5e614333dd19e3001df8bfb38beb0fae7d634 (patch)
tree8b7df52f373f5a571ce5398bbd3dfd2072323325 /node-repository
parentb746b56aa20958438244d38a6609299eac6ef89f (diff)
parent5a86d31823582ad80b802ff647ec0cb00b05b858 (diff)
Merge pull request #20775 from vespa-engine/mpolden/read-once
Avoid repeatedly reading nodes for every known node type
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java10
1 files changed, 5 insertions, 5 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java
index 4852f0f8269..d1909b7a8f7 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java
@@ -5,13 +5,13 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.NodeResources;
-import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.serialization.NetworkPortsSerializer;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.restapi.SlimeJsonResponse;
import com.yahoo.slime.Cursor;
import com.yahoo.vespa.applicationmodel.HostName;
import com.yahoo.vespa.hosted.provision.Node;
+import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.node.Address;
import com.yahoo.vespa.hosted.provision.node.History;
@@ -21,6 +21,7 @@ import com.yahoo.vespa.orchestrator.status.HostInfo;
import com.yahoo.vespa.orchestrator.status.HostStatus;
import java.net.URI;
+import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.Set;
@@ -93,17 +94,16 @@ class NodesResponse extends SlimeJsonResponse {
/** Outputs the nodes in the given state to a node array */
private void nodesToSlime(Node.State state, Cursor parentObject) {
Cursor nodeArray = parentObject.setArray("nodes");
- for (NodeType type : NodeType.values())
- toSlime(nodeRepository.nodes().list(state).nodeType(type).asList(), nodeArray);
+ toSlime(nodeRepository.nodes().list(state).sortedBy(Comparator.comparing(Node::type)), nodeArray);
}
/** Outputs all the nodes to a node array */
private void nodesToSlime(Cursor parentObject) {
Cursor nodeArray = parentObject.setArray("nodes");
- toSlime(nodeRepository.nodes().list().asList(), nodeArray);
+ toSlime(nodeRepository.nodes().list(), nodeArray);
}
- private void toSlime(List<Node> nodes, Cursor array) {
+ private void toSlime(NodeList nodes, Cursor array) {
for (Node node : nodes) {
if ( ! filter.test(node)) continue;
toSlime(node, recursive, array.addObject());