e2e pods: fix WaitForPodsResponding retry
The status error was embedded inside the new error constructed by
WaitForPodsResponding's get function, but not wrapped. Therefore
`apierrors.IsServiceUnavailable(err)` didn't find it and returned false -> no
retries.
Wrapping fixes this and Gomega formatting of the error remains useful:
	err := &errors.StatusError{}
	err.ErrStatus.Code = 503
	err.ErrStatus.Message = "temporary failure"
	err2 := fmt.Errorf("Controller %s: failed to Get from replica pod %s:\n%w\nPod status:\n%s",
		"foo", "bar",
		err, "some status")
	fmt.Println(format.Object(err2, 1))
        fmt.Println(errors.IsServiceUnavailable(err2))
=>
    <*fmt.wrapError | 0xc000139340>:
    Controller foo: failed to Get from replica pod bar:
    temporary failure
    Pod status:
    some status
    {
        msg: "Controller foo: failed to Get from replica pod bar:\ntemporary failure\nPod status:\nsome status",
        err: <*errors.StatusError | 0xc0001a01e0>{
            ErrStatus: {
                TypeMeta: {Kind: "", APIVersion: ""},
                ListMeta: {
                    SelfLink: "",
                    ResourceVersion: "",
                    Continue: "",
                    RemainingItemCount: nil,
                },
                Status: "",
                Message: "temporary failure",
                Reason: "",
                Details: nil,
                Code: 503,
            },
        },
    }
    true
			
			
This commit is contained in:
		@@ -581,10 +581,11 @@ func WaitForPodsResponding(ctx context.Context, c clientset.Interface, ns string
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				// We may encounter errors here because of a race between the pod readiness and apiserver
 | 
									// We may encounter errors here because of a race between the pod readiness and apiserver
 | 
				
			||||||
				// proxy. So, we log the error and retry if this occurs.
 | 
									// proxy or because of temporary failures. The error gets wrapped for framework.HandleRetry.
 | 
				
			||||||
				return nil, fmt.Errorf("Controller %s: failed to Get from replica pod %s:\n%s\nPod status:\n%s",
 | 
									// Gomega+Ginkgo will handle logging.
 | 
				
			||||||
 | 
									return nil, fmt.Errorf("controller %s: failed to Get from replica pod %s:\n%w\nPod status:\n%s",
 | 
				
			||||||
					controllerName, pod.Name,
 | 
										controllerName, pod.Name,
 | 
				
			||||||
					format.Object(err, 1), format.Object(pod.Status, 1))
 | 
										err, format.Object(pod.Status, 1))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			responses = append(responses, response{podName: pod.Name, response: string(body)})
 | 
								responses = append(responses, response{podName: pod.Name, response: string(body)})
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user