diff options
author | Martin Polden <mpolden@mpolden.no> | 2023-10-18 10:15:20 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2023-10-18 10:15:20 +0200 |
commit | ca8cb9773c300093ea34c4efff495c28df1249cc (patch) | |
tree | c51978988e48c1a19aec8ffe5382a5cefc5a4a80 | |
parent | e469b637cc90581ba95d644bb28d4512bc2126a7 (diff) |
Abort waiting on authentication failure
-rw-r--r-- | client/go/internal/vespa/target.go | 7 | ||||
-rw-r--r-- | client/go/internal/vespa/target_test.go | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/client/go/internal/vespa/target.go b/client/go/internal/vespa/target.go index 065537d8610..662e7383f97 100644 --- a/client/go/internal/vespa/target.go +++ b/client/go/internal/vespa/target.go @@ -37,6 +37,7 @@ const ( ) var errWaitTimeout = errors.New("wait timed out") +var errAuth = errors.New("auth failed") // Authenticator authenticates the given HTTP request. type Authenticator interface { @@ -113,7 +114,7 @@ func (s *Service) Do(request *http.Request, timeout time.Duration) (*http.Respon }) if s.auth != nil { if err := s.auth.Authenticate(request); err != nil { - return nil, err + return nil, fmt.Errorf("%w: %s", errAuth, err) } } return s.httpClient.Do(request, timeout) @@ -220,7 +221,9 @@ func wait(service *Service, okFn responseFunc, reqFn requestFunc, timeout, retry loopOnce := timeout == 0 for time.Now().Before(deadline) || loopOnce { response, err = service.Do(reqFn(), 10*time.Second) - if err == nil { + if errors.Is(err, errAuth) { + return status, fmt.Errorf("aborting wait: %w", err) + } else if err == nil { status = response.StatusCode body, err := io.ReadAll(response.Body) if err != nil { diff --git a/client/go/internal/vespa/target_test.go b/client/go/internal/vespa/target_test.go index abcbefe5529..25e38a30151 100644 --- a/client/go/internal/vespa/target_test.go +++ b/client/go/internal/vespa/target_test.go @@ -120,6 +120,8 @@ func TestCustomTargetAwaitDeployment(t *testing.T) { func TestCloudTargetWait(t *testing.T) { var logWriter bytes.Buffer target, client := createCloudTarget(t, &logWriter) + client.NextResponseError(errAuth) + assertService(t, true, target, "deploy", time.Second) // No retrying on auth error client.NextStatus(401) assertService(t, true, target, "deploy", time.Second) // No retrying on 4xx client.NextStatus(500) |