fix(storage): add server closed idle connection to retriable errors#14594
Merged
Conversation
Contributor
There was a problem hiding this comment.
Code Review
This pull request updates the ShouldRetry logic in storage/invoke.go to include 'server closed idle connection' as a retriable error, accompanied by new test cases in storage/invoke_test.go. The feedback suggests updating the surrounding documentation to reflect that the function now handles both socket and transport-level network errors, as the existing comment is now partially outdated.
cpriti-os
requested changes
May 18, 2026
…dle connection message
cpriti-os
approved these changes
May 18, 2026
cpriti-os
added a commit
that referenced
this pull request
May 21, 2026
PR created by the Librarian CLI to initialize a release. Merging this PR will auto trigger a release. Librarian Version: v0.14.0 Language Image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-go@sha256:19bb93e8f1f916c61b597db2bad65dc432f79baaabb210499d7d0e4ad1dffe29 <details><summary>storage: v1.61.4</summary> ## [v1.61.4](storage/v1.61.3...storage/v1.61.4) (2026-05-21) ### Bug Fixes * add server closed idle connection to retriable errors (#14594) ([37580e7](37580e7e)) </details>
krishnamd-jkp
added a commit
that referenced
this pull request
Jun 4, 2026
PR created by the Librarian CLI to initialize a release. Merging this PR will auto trigger a release. Librarian Version: v0.16.0 Language Image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-go@sha256:b04b076f5eedbb5546bd6fc1404969dd3698c8b19c0f34ae815a84ae735a606a <details><summary>storage: v1.62.3</summary> ## [v1.62.3](storage/v1.62.2...storage/v1.62.3) (2026-06-03) ### Bug Fixes * fix race condition during retries in gRPC writer (#14649) ([04b6c63](04b6c635)) * add server closed idle connection to retriable errors (#14594) ([20b37d6](20b37d65)) </details>
This was referenced Jun 16, 2026
Closed
krishnamd-jkp
added a commit
that referenced
this pull request
Jun 26, 2026
🤖 I have created a release *beep* *boop* --- ## [1.63.0](storage/v1.62.2...storage/v1.63.0) (2026-06-25) ### Features * **go:** Add full object checksum for negative offsets > size ([#20026](#20026)) ([a04d980](a04d980)) * **storage:** Add client feature tracking in HTTP client ([#14691](#14691)) ([319cc4c](319cc4c)) * **storage:** App Centric Observability ([#14685](#14685)) ([c3273bb](c3273bb)) * **storage:** Read checksums in gRPC partial reads ([#14586](#14586)) ([d29f68a](d29f68a)) * **storage:** Support deleteSourceObjects option in object compose ([#14704](#14704)) ([0d2d680](0d2d680)) * Update API sources and regenerate ([#14701](#14701)) ([a9b7921](a9b7921)) ### Bug Fixes * **storage:** Add server closed idle connection to retriable errors ([#14594](#14594)) ([a6bd392](a6bd392)) * **storage:** Fix race condition during retries in gRPC writer ([#14649](#14649)) ([c781a75](c781a75)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Krishnam Dhanush <krishnamd@google.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR adds
server closed idle connectionto the list of retriable socket-level network errors in the Cloud Storage client library.When the standard Go HTTP transport attempts to reuse a TCP keep-alive connection that GCS has closed due to an idle timeout, it returns a
*url.Errorcontaining the error message:http: server closed idle connectionBecause GCS does not classify this specific string as retriable, the entire write/upload operation immediately fails without retrying, even when idempotent preconditions (such as
IfGenerationMatchorDoesNotExist) are configured.Changes
storage/invoke.go: Added"server closed idle connection"to theretriableslice insideShouldRetry(err error).storage/invoke_test.go: Added explicit unit tests toTestShouldRetryverifying that both direct and wrapped"server closed idle connection"errors are correctly identified as retriable.Verification
Added unit test cases in
storage/invoke_test.gopass successfully:go test -v -short -run TestShouldRetry