diff --git a/pkg/meta/meta.go b/pkg/meta/meta.go index ac729b7f2..1e14c4176 100644 --- a/pkg/meta/meta.go +++ b/pkg/meta/meta.go @@ -190,11 +190,9 @@ func AddFinalizer(o metav1.Object, finalizer string) { // RemoveFinalizer from the supplied Kubernetes object's metadata. func RemoveFinalizer(o metav1.Object, finalizer string) { f := o.GetFinalizers() - for i, e := range f { - if e == finalizer { - f = append(f[:i], f[i+1:]...) - } - } + f = slices.DeleteFunc(f, func(e string) bool { + return e == finalizer + }) o.SetFinalizers(f) } diff --git a/pkg/meta/meta_test.go b/pkg/meta/meta_test.go index e68034421..7bc249011 100644 --- a/pkg/meta/meta_test.go +++ b/pkg/meta/meta_test.go @@ -538,6 +538,28 @@ func TestRemoveFinalizer(t *testing.T) { }, want: []string{funalizer}, }, + "DuplicateFinalizersExist": { + args: args{ + o: &corev1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Finalizers: []string{finalizer, finalizer}, + }, + }, + finalizer: finalizer, + }, + want: []string{}, + }, + "DuplicateFinalizersWithOther": { + args: args{ + o: &corev1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Finalizers: []string{finalizer, funalizer, finalizer}, + }, + }, + finalizer: finalizer, + }, + want: []string{funalizer}, + }, } for name, tc := range cases {