From 4d4a2a7814978b12b25d1dfa991c81f8acc30b4c Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Wed, 14 Jul 2021 08:44:09 +0200 Subject: [PATCH] e2e: prevent re-using empty pvc object When an error occurs, the pvc object is overwritten in the PollImmediate() loop. Re-using the pvc.Namespace results in error messages like Error getting pvc in namespace: '': an empty namespace may not be set when a resource name is provided and prevents the retry by PollImmediate() to never succeed. Storing the namespace in a local variable prevents this from happening. Reported-by: Rakshith R Signed-off-by: Niels de Vos --- e2e/pvc.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/e2e/pvc.go b/e2e/pvc.go index fb836a973..bdc605a54 100644 --- a/e2e/pvc.go +++ b/e2e/pvc.go @@ -38,14 +38,15 @@ func createPVCAndvalidatePV(c kubernetes.Interface, pvc *v1.PersistentVolumeClai return nil } name := pvc.Name + namespace := pvc.Namespace start := time.Now() e2elog.Logf("Waiting up to %v to be in Bound state", pvc) return wait.PollImmediate(poll, timeout, func() (bool, error) { - e2elog.Logf("waiting for PVC %s (%d seconds elapsed)", pvc.Name, int(time.Since(start).Seconds())) - pvc, err = c.CoreV1().PersistentVolumeClaims(pvc.Namespace).Get(context.TODO(), name, metav1.GetOptions{}) + e2elog.Logf("waiting for PVC %s (%d seconds elapsed)", name, int(time.Since(start).Seconds())) + pvc, err = c.CoreV1().PersistentVolumeClaims(namespace).Get(context.TODO(), name, metav1.GetOptions{}) if err != nil { - e2elog.Logf("Error getting pvc in namespace: '%s': %v", pvc.Namespace, err) + e2elog.Logf("Error getting pvc %q in namespace %q: %v", name, namespace, err) if isRetryableAPIError(err) { return false, nil } @@ -72,7 +73,7 @@ func createPVCAndvalidatePV(c kubernetes.Interface, pvc *v1.PersistentVolumeClai err = e2epv.WaitOnPVandPVC( c, &framework.TimeoutContext{ClaimBound: timeout, PVBound: timeout}, - pvc.Namespace, + namespace, pv, pvc) if err != nil {