From b7e5fce706473ad4b16f6de0573723deaa0fd847 Mon Sep 17 00:00:00 2001 From: novahe Date: Mon, 5 Jul 2021 21:55:55 +0800 Subject: [PATCH] client-go: copying object to fix data race (#103148) Kubernetes-commit: ce257266aa7f3f104e656b722310be32e95a9cb5 --- testing/fixture.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/testing/fixture.go b/testing/fixture.go index caa04511..fe7f0cd3 100644 --- a/testing/fixture.go +++ b/testing/fixture.go @@ -400,7 +400,8 @@ func (t *tracker) add(gvr schema.GroupVersionResource, obj runtime.Object, ns st if _, ok = t.objects[gvr][namespacedName]; ok { if replaceExisting { for _, w := range t.getWatches(gvr, ns) { - w.Modify(obj) + // To avoid the object from being accidentally modified by watcher + w.Modify(obj.DeepCopyObject()) } t.objects[gvr][namespacedName] = obj return nil @@ -416,7 +417,8 @@ func (t *tracker) add(gvr schema.GroupVersionResource, obj runtime.Object, ns st t.objects[gvr][namespacedName] = obj for _, w := range t.getWatches(gvr, ns) { - w.Add(obj) + // To avoid the object from being accidentally modified by watcher + w.Add(obj.DeepCopyObject()) } return nil @@ -456,7 +458,7 @@ func (t *tracker) Delete(gvr schema.GroupVersionResource, ns, name string) error delete(objs, namespacedName) for _, w := range t.getWatches(gvr, ns) { - w.Delete(obj) + w.Delete(obj.DeepCopyObject()) } return nil }