raghav-reglobe opened a new pull request, #2754:
URL: https://github.com/apache/iceberg-rust/pull/2754
## Summary
Adds a recursive file-listing capability to `FileIO`, the missing primitive
for table-maintenance operations (orphan-file cleanup foremost) that need to
enumerate everything under a table location and compare it against paths
recorded in table metadata.
- `ListEntry { path, size, last_modified_ms }` — paths come back **absolute,
in the same form as the listed prefix**, so they round-trip directly to other
`FileIO` operations and compare against metadata-recorded paths without
normalization.
- `last_modified_ms` is `Option`: storages that don't track modification
times report `None`, and age-based callers must treat such files as not
eligible (protects possibly-in-flight writes).
- `Storage::list_prefix` ships with a `FeatureUnsupported` default and is
implemented for the OpenDAL storages (recursive lister, entries mapped back to
absolute form), the resolving router, local fs (recursive walk with real
mtimes), and memory (which now stamps write times so age-based logic is
unit-testable).
## Motivation
First consumer is a `RemoveOrphanFilesAction` (Java/Go parity — cf. the
maintenance-operations proposal in #1453), which I'll submit as a follow-up PR
stacked on this one. Kept separate so this stays a small, standalone review.
## Validation
- Unit tests for memory + local fs `list_prefix` (prefix-form round-trip,
sizes, mtimes, empty-prefix behavior).
- Full `iceberg` suite: 1377 passed. `cargo fmt` clean; `public-api.txt`
regenerated.
--
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]