fix(writer): retry storage.put on temporary network errors #2207
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
Read-only operations are retried by [
ObjectStore
] internally. However, PUT/DELETE operationsare not retried even thought they are technically idempotent. [
ObjectStore
] does not retrythose operations because having preconditions may produce different results for the same
request. PUT/DELETE operations without preconditions are idempotent and can be retried.
Unfortunately, [
ObjectStore
]'s retry mechanism only works on HTTP request level, thus thereis no way to distinguish whether a request has preconditions or not.
This PR provides additional methods for working with [
ObjectStore
] that automatically retryunconditional operations when they fail, and use these methods in writer to retry on temporary
network errors.
Related Issue(s)
See