[filesystem] Isolate Jindo OSS presigning dependencies - #9856
Merged
jerry-024 merged 1 commit intoSep 16, 2026
Merged
Conversation
JunRuiLee
force-pushed
the
fix/jindo-oss-plugin-isolation-master
branch
from
September 15, 2026 16:30
5bbec4e to
ca5fe46
Compare
JunRuiLee
marked this pull request as draft
September 15, 2026 17:56
JunRuiLee
marked this pull request as ready for review
September 16, 2026 01:56
JunRuiLee
marked this pull request as draft
September 16, 2026 02:05
Load OSS presigning dependencies from a private plugin directory with the existing PluginLoader mechanism, without adding a Maven module or changing the shared classloader implementation. Keep commons-logging available privately, initialize the plugin loader lazily, and preserve Jindo-specific dependency notices and JDOM/JAXB license resources. Use the existing unit/integration test naming convention to verify packaged class and resource isolation, minimal and conflicting host classpaths, multi-release entries, and presigner class boundaries.
JunRuiLee
force-pushed
the
fix/jindo-oss-plugin-isolation-master
branch
from
September 16, 2026 03:09
578feef to
9ed877f
Compare
JunRuiLee
marked this pull request as ready for review
September 16, 2026 03:16
Contributor
Author
|
This was found while integrating Paimon 2.1 into Doris: the OSS SDK bundled at the root of The fix moves it into a private plugin directory via the existing |
Contributor
Author
|
@jerry-024 @sundapeng could you help to review this pr? Thanks. |
4 tasks
jerry-024
pushed a commit
that referenced
this pull request
Sep 16, 2026
(cherry picked from commit de872c4)
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.
Purpose
Prevent the OSS SDK dependency closure bundled in
paimon-jindofrom shadowing libraries supplied by an embedding application. For example, the bundled Gson 2.8.6 can mask a newer Gson used by Doris, depending on classpath order.Reuse the same
PluginLoaderand private-directory classloader isolation mechanism already used bypaimon-oss, rather than maintaining a package-relocation list. This applies to the OSS presigning implementation and its dependency closure; it does not change the Jindo/Hadoop filesystem loading path or introduce a separate implementation Maven module.Specifically:
paimon-plugin-jindo-oss/instead of exposing them at the JAR root.This PR targets
master; a separaterelease-2.1backport can follow after the mainline change is accepted.Tests
Ran the following on JDK 8 and JDK 11 against this master-based commit:
mvn -B -ntp -pl paimon-filesystems/paimon-jindo -am \ -Dmaven.jar.forceCreation=true \ '-Dtest=JindoFileIOTest#testPlugin*+testCreateBlob*+testDisable*+testKeep*' \ -DwildcardSuites=none -DfailIfNoTests=false verifyBoth runs pass: 4 selected unit tests and 4 packaged-artifact isolation tests per JDK, with Checkstyle, Spotless, and Enforcer enabled.
The artifact tests cover root/private JAR contents and SPI discovery, a minimal host classpath, conflicting dependencies before and after the plugin JAR, independent Gson serialization, private OSS resources, shared logging classes, classloader-safe reflection, presigning, and context-classloader restoration.
The module Apache RAT check also passes (15 approved files, 0 unapproved), excluding only the generated
dependency-reduced-pom.xml.git diff --checkpasses.Local validation does not include a live Doris/OSS deployment. The existing native-filesystem fallback test was not selected because the local macOS/arm64 environment cannot run the Jindo native filesystem; the test itself remains enabled for supported environments.