From 7e5db1f55e62126b927e6dfa8655b40f934fd4d5 Mon Sep 17 00:00:00 2001 From: Oscar Zhou <100548325+oscarzhou-portainer@users.noreply.github.com> Date: Tue, 1 Apr 2025 14:05:56 +1300 Subject: [PATCH] refactor(edgegroup): optimize edge group search performance [BE-11716] (#579) --- api/internal/edge/edgegroup.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/api/internal/edge/edgegroup.go b/api/internal/edge/edgegroup.go index 255f5f55f..9a292b7e2 100644 --- a/api/internal/edge/edgegroup.go +++ b/api/internal/edge/edgegroup.go @@ -13,21 +13,19 @@ func EdgeGroupRelatedEndpoints(edgeGroup *portainer.EdgeGroup, endpoints []porta return edgeGroup.Endpoints } + endpointGroupsMap := map[portainer.EndpointGroupID]*portainer.EndpointGroup{} + for i, group := range endpointGroups { + endpointGroupsMap[group.ID] = &endpointGroups[i] + } + endpointIDs := []portainer.EndpointID{} for _, endpoint := range endpoints { if !endpointutils.IsEdgeEndpoint(&endpoint) { continue } - var endpointGroup portainer.EndpointGroup - for _, group := range endpointGroups { - if endpoint.GroupID == group.ID { - endpointGroup = group - break - } - } - - if edgeGroupRelatedToEndpoint(edgeGroup, &endpoint, &endpointGroup) { + endpointGroup := endpointGroupsMap[endpoint.GroupID] + if edgeGroupRelatedToEndpoint(edgeGroup, &endpoint, endpointGroup) { endpointIDs = append(endpointIDs, endpoint.ID) } }