# UNDF: UNDF-2026-000000137 --- a/pkg/controller/garbagecollector/patch.go +++ b/pkg/controller/garbagecollector/patch.go @@ -17,7 +17,6 @@ package garbagecollector import ( "encoding/json" - "slices" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" @@ -108,11 +107,16 @@ func (gc *GarbageCollector) deleteOwnerRefJSONMergePatch(item *node, ownerUIDs . expectedObjectMeta := ObjectMetaForPatch{} expectedObjectMeta.ResourceVersion = accessor.GetResourceVersion() refs := accessor.GetOwnerReferences() + // Build O(1) lookup set — avoids O(refs × ownerUIDs) with slices.Contains. + dropSet := make(map[types.UID]struct{}, len(ownerUIDs)) + for _, uid := range ownerUIDs { + dropSet[uid] = struct{}{} + } for _, ref := range refs { - if !slices.Contains(ownerUIDs, ref.UID) { + if _, drop := dropSet[ref.UID]; !drop { expectedObjectMeta.OwnerReferences = append(expectedObjectMeta.OwnerReferences, ref) } } return json.Marshal(objectForPatch{expectedObjectMeta}) }