criccomini opened a new pull request, #849: URL: https://github.com/apache/arrow-rs-object-store/pull/849
# Which issue does this PR close? Closes #831. # Rationale for this change `MultipartUpload::put_part` hides the upload ID and part number, so callers cannot retry a failed part without starting the entire upload again. The existing request retry loop cannot provide long-running retries safely because it replays an already signed request. This change retries from the multipart part operation boundary. Each attempt rebuilds the provider request, fetches credentials, and generates a new signature while preserving the same logical part identity and payload. # What changes are included in this PR? - Add an asynchronous `RetryPolicy` API with normalized HTTP status and transport failures. - Allow callers to attach a retry policy through `PutMultipartOptions`. - Add outer part retry loops to the S3, GCS, and Azure multipart implementations. - Preserve the upload ID, part number, and payload across attempts. - Generate Azure block IDs once per logical part so retries replace the same block. - Preserve existing bounded request retries, including S3 error-in-success-response handling. - Return errors that cannot be classified as HTTP failures without consulting the policy. # Are there any user-facing changes? This adds an opt-in public retry policy for multipart part uploads. Existing behavior is unchanged when no policy is configured. There are no breaking API changes. Tested with: - `cargo test --all-features` - `cargo check --no-default-features --features aws-base,gcp-base,azure-base` - `cargo fmt --all -- --check` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
