wgtmac opened a new pull request, #889:
URL: https://github.com/apache/iceberg-cpp/pull/889
## Problem
The existing FileIO design embeds scheme ownership in `ResolvingFileIO` and
registers the resolver itself as a special implementation. This duplicates
backend-specific scheme knowledge, prevents custom FileIOs from declaring the
schemes they support, and couples automatic routing to a special registry
entry.
Cached delegates are also returned as raw pointers while credential refresh
can invalidate the cache. In addition, treating `oss://` as an S3 alias is
not
safe without provider-specific endpoint and compatibility validation.
## Changes
- Make `FileIORegistry::Factory` contain a required `create` callback and an
optional `accepts` callback.
- Resolve normalized schemes from registered factories, with later
registrations overriding earlier ones.
- Construct the default `ResolvingFileIO` directly while preserving explicit
`io-impl` precedence.
- Use Java-compatible first-colon scheme parsing and remove hard-coded scheme
mapping from the resolver.
- Keep cached delegates alive with `shared_ptr` across credential refreshes.
- Forward complete credential lists to delegates that support them and
rebuild
delegates after refresh.
- Limit Arrow S3 routing and credential prefix handling to `s3`, `s3a`, and
`s3n`; defer OSS/COS support to a separate change.
- Add focused registry, resolver, REST, and S3 coverage.
- Document built-in and custom FileIO usage.
--
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]