beinan opened a new pull request, #886: URL: https://github.com/apache/arrow-rs-object-store/pull/886
# Which issue does this PR close? Closes #885. # Rationale for this change Azure can successfully commit a multipart upload even when the client loses the completion response. The SDK retries the same request, but its `<Uncommitted>` block entries no longer exist in the uncommitted list after the first commit. The retry then fails with HTTP 400 `InvalidBlockList` while the object has already been written. # What changes are included in this PR? Serialize completion entries as `<Latest>`, which resolves each block from the uncommitted list first, then the committed list. This lets the existing HTTP retry use the same block IDs after a lost response, without re-uploading the parts or changing retry classification. Add a stateful HTTP connector regression that moves uploaded blocks to the committed state, loses the success response, and checks that the SDK retries an identical completion request with the exact ordered payload. A separate regression verifies that genuinely missing blocks still return `InvalidBlockList` after one attempt. Validation: - The lost-response regression fails with `InvalidBlockList` on the original serializer and passes with this change. - `cargo test --locked --features azure --lib`: 169 passed, 4 ignored; external integration tests were not enabled in this run. - `cargo clippy --locked --all-features --all-targets -- -D warnings` and formatting passed. - Independently reproduced against real Azure using object_store 0.13.2: dropping a received successful completion response causes the original serializer to fail on retry; the same serializer change succeeds, with exact payload readback and test-object cleanup. This is separate from the in-process tests on current main. # Are there any user-facing changes? Azure multipart completion can recover from a lost successful response. No public API changes, dependency changes, or broader HTTP 400 retries. -- 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]
