You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
adev-code
added
investigating
This issue is being investigated and/or work is in progress to resolve the issue.
p3
This is a minor priority issue
and removed
needs-triage
This issue or PR still needs to be triaged.
labels
Dec 23, 2024
Hello @goro9, thanks for reaching out and reporting the issue. I have replicated from my side and yes Go SDK is not retrying as it should. Meanwhile trying with Python SDK, it does make a retry. In this regard, I have brought this issue to the team for further review. I will let you know as soon as I get any updates. If you have any question let me know. Thanks.
adev-code
added
needs-review
This issue or pull request needs review from a core team member.
and removed
investigating
This issue is being investigated and/or work is in progress to resolve the issue.
labels
Dec 23, 2024
Madrigal
added
p1
This is a high priority issue
queued
This issues is on the AWS team's backlog
and removed
needs-review
This issue or pull request needs review from a core team member.
p3
This is a minor priority issue
labels
Jan 6, 2025
Based on waiter workflow it seems like we're not doing the right thing. We need to address this and figure out if it's safe to roll out.
Need to also do some investigation around waiters on other services
lucix-aws
changed the title
service/s3: Always retry when an error occurs, regardless of the error type
service/s3: HeadObject waiter always retries on error, regardless of type
Jan 8, 2025
If none of the acceptors are matched and an error was encountered while calling the operation, then transition to the failure state and stop waiting.
Our implementation, for reasons probably lost to time, is just not doing this.
We can change it, trivially, but that comes with risk. Basically, any scenario where a waiter is called, some transient non-matching errors come back, and then a match does eventually come back would be broken. They would now fail on the unmatched error, as the spec says they should, instead of ignoring it. Whether or not anyone in the wild depends on that behavior, it's impossible to say.
The other option would be to let users enable the "on-spec" behavior through a new flag. Not at all a fan of having what would essentially be doThisCorrectly bool but it's the only way to avoid the aforementioned risk.
Acknowledgements
go get -u github.com/aws/aws-sdk-go-v2/...
)Describe the bug
It seems that the
ObjectExistsStateRetryable
used by default inNewObjectExistsWaiter
is being retried for errors other than NotFound.aws-sdk-go-v2/service/s3/api_op_HeadObject.go
Lines 915 to 930 in 3cc2195
Regression Issue
Expected Behavior
For NotFound errors: retry HeadObject
For errors other than NotFound: return err as is
Current Behavior
Always retry when an error occurs, regardless of the error type.
Reproduction Steps
Possible Solution
No response
Additional Information/Context
No response
AWS Go SDK V2 Module Versions Used
Compiler and Version used
go version go1.23.4 darwin/arm64
Operating System and version
macOS Sonoma 14.1
The text was updated successfully, but these errors were encountered: