JeonDaehong opened a new pull request, #3435:
URL: https://github.com/apache/iceberg-rust/pull/3435

   ## Which issue does this PR close?
   
   - Closes #3434.
   
   ## What changes are included in this PR?
   
   A positional delete file whose load fails no longer stays `Loading` forever.
   
   - `PosDelLoadAction::Load` now carries a `PosDelLoadGuard`. `finish()` marks 
the file loaded. Dropping the guard without finishing (open or parse error, or 
the load dropped because another delete file failed) removes the `Loading` 
marker and wakes the waiters.
   - A woken waiter checks the state again and loads the file itself if it 
still isn't loaded, instead of assuming it is.
   
   This is the positional counterpart of #3275 and doesn't depend on it or on 
#3433. It merges cleanly with #3433 (1960 lib tests pass on the merge).
   
   ## Are these changes tested?
   
   Yes.
   - `test_pos_del_load_can_be_retried_after_failure` is the #3434 repro. On 
`main` it times out after 5s; here the retry loads the file and matches a fresh 
loader.
   - `test_abandoned_pos_del_load_wakes_waiters_and_can_be_retried`: dropping 
the guard wakes a waiter, and the next call gets `Load`.
   - Checked by hand: two concurrent `load_deletes` of a missing file on one 
loader hang on `main`; here both return the error.
   
   `cargo test -p iceberg --lib` (1954 passed), `cargo clippy --workspace 
--all-targets -- -D warnings` and `cargo fmt --check` are clean.
   
   ## AI Disclosure
   
   I used Claude Code to help write the fix and tests. I reproduced the hang on 
`main`, reviewed the code, and ran the tests and lints above.
   


-- 
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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to