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]

Reply via email to