From 8efd00d3a913d1c454622791d4bfaa23e1343d70 Mon Sep 17 00:00:00 2001 From: Cody Oss <6331106+codyoss@users.noreply.github.com> Date: Mon, 13 Feb 2023 17:01:59 +0000 Subject: [PATCH] fix(internal/gensupport): don't prematurely close timers (#1856) quitAfterTimer should only be closed when function breaks or returns as it is created outside of the for loop. Tested with local replacing and fixes failing TestIndefiniteRetries test with the patch. Updates: https://github.com/googleapis/google-cloud-go/issues/7410 --- internal/gensupport/resumable.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/internal/gensupport/resumable.go b/internal/gensupport/resumable.go index ee8e9f32475..f168ea6d2b7 100644 --- a/internal/gensupport/resumable.go +++ b/internal/gensupport/resumable.go @@ -209,7 +209,6 @@ func (rx *ResumableUpload) Upload(ctx context.Context) (resp *http.Response, err } return prepareReturn(resp, err) case <-pauseTimer.C: - quitAfterTimer.Stop() case <-quitAfterTimer.C: pauseTimer.Stop() return prepareReturn(resp, err) @@ -231,7 +230,6 @@ func (rx *ResumableUpload) Upload(ctx context.Context) (resp *http.Response, err case <-quitAfterTimer.C: return prepareReturn(resp, err) default: - quitAfterTimer.Stop() } resp, err = rx.transferChunk(ctx) @@ -243,6 +241,7 @@ func (rx *ResumableUpload) Upload(ctx context.Context) (resp *http.Response, err // Check if we should retry the request. if !errorFunc(status, err) { + quitAfterTimer.Stop() break }