allthingssecurity opened a new pull request, #18762:
URL: https://github.com/apache/iceberg/pull/18762

   `IncrementalFileCleanup` suppressed failures while reading the manifest 
lists of retained snapshots, so an unreadable list left the set of live 
manifests incomplete and manifests still referenced by a retained snapshot were 
deleted while the expiration reported success. This reads retained snapshots 
with `stopOnFailure().throwFailureWhenFinished()`, as `ReachableFileCleanup` 
already does; the later best-effort reads and deletes are unchanged. Cleanup 
runs after the commit, so the expired snapshots are still removed from 
metadata, and files left behind can be removed by orphan file cleanup.
   
   Test plan: new 
`TestRemoveSnapshots#testFailedRetainedManifestListReadDoesNotDeleteLiveManifests`
 makes the retained snapshot's manifest list unreadable during cleanup. On main 
it fails for every format version with incremental cleanup (the live manifest 
is deleted) and passes with reachable cleanup; with this change both pass. 
`:iceberg-core:test`, `checkstyleMain` and `checkstyleTest` pass.
   
   ---
   **AI Disclosure**
   - Model: Claude Opus 5.5
   - Platform/Tool: Claude Code
   - Human Oversight: fully reviewed
   - Prompt Summary: Find concurrency and failure-handling bugs in Iceberg, 
reproduce them against released jars, and prepare a minimal fix with a 
regression test. The bug was found with a deterministic simulation harness that 
injects storage read faults. The fix, the test and this description are 
generated.
   


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