From 3baadbb62ff328b381967f14464e290e3a993bc0 Mon Sep 17 00:00:00 2001 From: BrennaEpp Date: Mon, 28 Feb 2022 22:47:49 -0800 Subject: [PATCH] feat(internal/gensupport): add net.ErrClosed to default retry --- internal/gensupport/retry.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/internal/gensupport/retry.go b/internal/gensupport/retry.go index 873dab36334..20b57d925f1 100644 --- a/internal/gensupport/retry.go +++ b/internal/gensupport/retry.go @@ -5,7 +5,10 @@ package gensupport import ( + "errors" "io" + "net" + "strings" "time" "github.com/googleapis/gax-go/v2" @@ -65,6 +68,14 @@ func shouldRetry(status int, err error) bool { return true } } + var opErr *net.OpError + if errors.As(err, &opErr) { + if strings.Contains(opErr.Error(), "use of closed network connection") { + // TODO: check against net.ErrClosed (go 1.16+) instead of string + return true + } + } + // If Go 1.13 error unwrapping is available, use this to examine wrapped // errors. if err, ok := err.(interface{ Unwrap() error }); ok {