27 lines
1 KiB
Diff
27 lines
1 KiB
Diff
# 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})
|
||
}
|