diff --git a/pubsub/service.go b/pubsub/service.go index d9a00021eb0..0c24be25a69 100644 --- a/pubsub/service.go +++ b/pubsub/service.go @@ -62,6 +62,14 @@ func (r *defaultRetryer) Retry(err error) (pause time.Duration, shouldRetry bool return r.bo.Pause(), true } return 0, false + case codes.Unknown: + // Retry GOAWAY, see https://github.com/googleapis/google-cloud-go/issues/4257. + isGoaway := strings.Contains(s.Message(), "error reading from server: EOF") && + strings.Contains(s.Message(), "received prior goaway") + if isGoaway { + return r.bo.Pause(), true + } + return 0, false default: return 0, false }