Skip to content
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

Improve Retry Coverage #5608

Closed
andrebsguedes opened this issue Apr 8, 2024 · 1 comment · Fixed by #5609
Closed

Improve Retry Coverage #5608

andrebsguedes opened this issue Apr 8, 2024 · 1 comment · Fixed by #5609
Labels
enhancement Any new improvement worthy of a entry in the changelog object-store Object Store Interface

Comments

@andrebsguedes
Copy link
Contributor

Is your feature request related to a problem or challenge? Please describe what you are trying to do.

Currently some retries are only performed for requests that have an HTTP method that is considered safe by rfc7231 due to potential problems around timeouts and non-idempotent operations. The problem with this approach is that there are many idempotent requests that use methods not considered safe by this criteria, and in this case the requests may not be retried.

This problem can manifest in places where the usual workaround of wrapping the request with an extra retry layer is not efficient. One example is put_part on a multipart upload which cannot be wrapped in a retry loop without aborting the whole stream and streaming again from the start (which may not be always possible).

Another related problem is that the current checks for retrying transport errors do not cover all common cases (even for "safe" operations) which further exacerbates the first problem.

Describe the solution you'd like

One solution would be to create another version of send_retry which allows to manually specify that the operation is idempotent irrespective of the request method. This version could be used in "not safe" requests which are known to be idempotent.

Also, increase the coverage of retries for transport errors.

Describe alternatives you've considered

As explained in the initial description wrapping the request with another retry layer is not efficient in some cases.

@andrebsguedes andrebsguedes added the enhancement Any new improvement worthy of a entry in the changelog label Apr 8, 2024
@tustvold
Copy link
Contributor

label_issue.py automatically added labels {'object-store'} from #5609

@tustvold tustvold added the object-store Object Store Interface label Apr 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Any new improvement worthy of a entry in the changelog object-store Object Store Interface
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants