feat(storage/opendal): route oss:// URLs through the S3 backend#2332
Open
plusplusjiajia wants to merge 1 commit intoapache:mainfrom
Open
feat(storage/opendal): route oss:// URLs through the S3 backend#2332plusplusjiajia wants to merge 1 commit intoapache:mainfrom
plusplusjiajia wants to merge 1 commit intoapache:mainfrom
Conversation
CTTY
reviewed
Apr 15, 2026
Collaborator
CTTY
left a comment
There was a problem hiding this comment.
Hi @plusplusjiajia thanks for the contribution! Logic wise this makes sense, but I'm concerned that this will confuse users that OSS storage has two modes. Do you think we should just keep one?
| #[cfg(feature = "opendal-oss")] | ||
| // OSS is S3-API-compatible; route through S3 so `s3.*` props | ||
| // work for OSS-backed tables (mirrors pyiceberg/Java S3FileIO). | ||
| #[cfg(feature = "opendal-s3")] |
Collaborator
There was a problem hiding this comment.
Suggested change
| #[cfg(feature = "opendal-s3")] | |
| #[cfg(all(feature = "opendal-oss", feature = "opendal-s3"))] |
Only having s3 feature flag will introduce oss related code to non-oss users
| } | ||
| // Fallback: builds without `opendal-s3` but with `opendal-oss` | ||
| // still use the native OSS service (which consumes `oss.*` keys). | ||
| #[cfg(all(feature = "opendal-oss", not(feature = "opendal-s3")))] |
Collaborator
There was a problem hiding this comment.
I'm not very familiar with OSS storage so not sure about it: Is the fallback actually necessary? I'm thinking if using OSS exactly like S3 is the common case, maybe we can just use OpenDalS3Storage directly?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue does this PR close?
N/A
What changes are included in this PR?
Aliyun OSS exposes an S3-compatible API, and the other two Iceberg implementations already read oss:// tables through their S3 code path with canonical s3.* properties:
iceberg-rust routes oss:// to opendal's native Oss service instead, which reads a separate oss.* namespace and can't be driven by the same credentials. Align with the rest of the ecosystem.