From 37c58aeadfd781cdab0bd8cbdd8f14b2538703c2 Mon Sep 17 00:00:00 2001 From: iiiceoo Date: Wed, 31 May 2023 18:11:30 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fakeClient.Status().Update(...)?= =?UTF-8?q?=20cannot=20recognize=20resource=20version=20conflicts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The fake client of subresource is unable to correctly handle the case of resource version conflict when updating. The phenomenon is that it did not return a 409 status error. Signed-off-by: iiiceoo --- pkg/client/fake/client.go | 4 ++-- pkg/client/fake/client_test.go | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pkg/client/fake/client.go b/pkg/client/fake/client.go index 7167c5505e..aaedac8440 100644 --- a/pkg/client/fake/client.go +++ b/pkg/client/fake/client.go @@ -992,11 +992,11 @@ func copyNonStatusFrom(old, new runtime.Object) error { } } - newClientObject.SetResourceVersion(rv) - if err := fromMapStringAny(newMapStringAny, new); err != nil { return fmt.Errorf("failed to convert back from map[string]any: %w", err) } + newClientObject.SetResourceVersion(rv) + return nil } diff --git a/pkg/client/fake/client_test.go b/pkg/client/fake/client_test.go index a4e807a526..705e7b9645 100644 --- a/pkg/client/fake/client_test.go +++ b/pkg/client/fake/client_test.go @@ -1431,14 +1431,15 @@ var _ = Describe("Fake client", func() { It("should return a conflict error when an incorrect RV is used on status update", func() { obj := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{ - Name: "node", + Name: "node", + ResourceVersion: trackerAddResourceVersion, }, } cl := NewClientBuilder().WithStatusSubresource(obj).WithObjects(obj).Build() obj.Status.Phase = corev1.NodeRunning obj.ResourceVersion = "invalid" - err := cl.Update(context.Background(), obj) + err := cl.Status().Update(context.Background(), obj) Expect(apierrors.IsConflict(err)).To(BeTrue()) })