-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
storage: Why "ECONNRESET on read" is not transient error #9478
Comments
Thanks for reporting. Yes, we do intend to retry any ECONNRESET error, and we do that with We could potentially add a special case for Also the idea of |
Thanks for the answer. I have already added custom handling of BTW, looks like What should I do with this issue, close by myself/you will close it/keep open for future improvement? Also, is it OK to submit the PR for this case (if I make it)? |
We can add |
We are seeing these errors surfaced via net.OpError as well as url.Error. Update the ShouldRetry function accordingly. Also, use net.ErrClosed sentinel over string matching. Fixes googleapis#9478
We are seeing these errors surfaced via net.OpError as well as url.Error. Update the ShouldRetry function accordingly. Also, use net.ErrClosed sentinel over string matching. Fixes #9478
Recently I added more monitoring in the software I am developing and noticed in storage module the following sequence of errors during listing bucket:
Logs:
Google client creation
Code for custom retry function:
Code for listing:
I have read the documentation which states that only
url.Error
is considered a transient error in the case of "ECONNRESET". I suppose that the error is raised during reading (this is my assumption). I have also seen a similar (but not identical) discussion here: Azure/go-autorest#450. There is also a link to a Go standard library test, but it doesn't clarify things https://go.dev/src/net/net_test.go.What is the goal of my issue?
From my perspective (and from a high-level view of this functionality), any error related to "ECONNRESET" should always be considered retryable. Could you explain whether this makes sense or if perhaps I am mistaken?
The text was updated successfully, but these errors were encountered: