fix: initialize OpenDAL HTTP transport for static linking - #80
Open
zhangstar333 wants to merge 1 commit into
Open
fix: initialize OpenDAL HTTP transport for static linking#80zhangstar333 wants to merge 1 commit into
zhangstar333 wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
✅ Gate recommendation: approve.
The patch fixes the static-link regression introduced by the Lance 11/OpenDAL 0.58 upgrade: ordinary archive linking can discard OpenDAL’s constructor before OSS I/O begins. Initializing the documented, idempotent default from Lance C’s shared runtime addresses that root cause while preserving an already installed transport and the C ABI. Keeping this reachability inside Lance C is preferable to requiring every consumer to use whole-archive linker flags; the regression coverage exercises both ordinary and shared-session opens.
zhangstar333
added a commit
to zhangstar333/incubator-doris
that referenced
this pull request
Sep 10, 2026
### What problem does this PR solve? Related PR: lance-format/lance-c#80 Problem Summary: Native static linking can omit OpenDAL's automatic constructor, causing OSS reads to fail because the default HTTP transport is not installed. Include upstream commit 7fcd9c4ff7c03c10bdc9d8a600b3f7b0cf28a9ad after the existing Lance-C patch chain. It explicitly installs the transport during runtime initialization and adds static C linking regression coverage. Rebase only the Cargo.toml and Cargo.lock patch context over the existing foyer and object_store dependencies. Keep upstream code and test additions unchanged and record the upstream source in the patch header. ### Release note Include the Lance-C fix for missing OpenDAL HTTP transport initialization when accessing OSS through a statically linked native executable. ### Check List (For Author) - Test: Manual validation of archive MD5, clean full-chain zero-fuzz patch application, isolated downloader first and repeat runs, source-tree equality, bash syntax, Python AST, and unchanged upstream code additions. Script whitespace checks passed; imported patch whitespace is preserved. No Doris or Lance-C build or runtime tests were run. - Behavior changed: Yes; initialize OpenDAL HTTP transport explicitly. - Does this need documentation: No; bundled dependency fix.
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.
Explicitly install OpenDAL's default HTTP transport during Lance-C runtime initialization. Native static linking can omit OpenDAL's automatic constructor, causing OSS reads to fail with “default HTTP transport is not installed”.
Add a static C linking regression test covering ordinary and shared-session dataset opens against a local HTTP server.