From 89e23dd038b096107df94699dea1b2238e27c650 Mon Sep 17 00:00:00 2001 From: Kensei Nakada Date: Sun, 24 Nov 2024 16:22:09 +0900 Subject: [PATCH] fix(e2e): retry on conflict when deleting extended resource --- test/e2e/framework/node/helper.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/test/e2e/framework/node/helper.go b/test/e2e/framework/node/helper.go index af28c0d44d3..604404bf741 100644 --- a/test/e2e/framework/node/helper.go +++ b/test/e2e/framework/node/helper.go @@ -30,6 +30,7 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/wait" clientset "k8s.io/client-go/kubernetes" + "k8s.io/client-go/util/retry" "k8s.io/kubernetes/test/e2e/framework" testutils "k8s.io/kubernetes/test/utils" @@ -204,10 +205,15 @@ func RemoveExtendedResource(ctx context.Context, clientSet clientset.Interface, extendedResource := v1.ResourceName(extendedResourceName) ginkgo.By("Removing a custom resource") - node, err := clientSet.CoreV1().Nodes().Get(ctx, nodeName, metav1.GetOptions{}) - framework.ExpectNoError(err) - delete(node.Status.Capacity, extendedResource) - delete(node.Status.Allocatable, extendedResource) - _, err = clientSet.CoreV1().Nodes().UpdateStatus(ctx, node, metav1.UpdateOptions{}) + err := retry.RetryOnConflict(retry.DefaultBackoff, func() error { + node, err := clientSet.CoreV1().Nodes().Get(ctx, nodeName, metav1.GetOptions{}) + if err != nil { + return fmt.Errorf("failed to get node %s: %w", nodeName, err) + } + delete(node.Status.Capacity, extendedResource) + delete(node.Status.Allocatable, extendedResource) + _, err = clientSet.CoreV1().Nodes().UpdateStatus(ctx, node, metav1.UpdateOptions{}) + return err + }) framework.ExpectNoError(err) }