diff options
author | Harald Musum <musum@verizonmedia.com> | 2022-01-12 16:02:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-12 16:02:21 +0100 |
commit | bec5e614333dd19e3001df8bfb38beb0fae7d634 (patch) | |
tree | 8b7df52f373f5a571ce5398bbd3dfd2072323325 /node-repository | |
parent | b746b56aa20958438244d38a6609299eac6ef89f (diff) | |
parent | 5a86d31823582ad80b802ff647ec0cb00b05b858 (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.java | 10 |
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()); |