Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions fluss-client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,28 @@
<include>*:*</include>
</includes>
</artifactSet>
<relocations>
<!-- commons-lang3 and commons-math3 are compile dependencies of
fluss-common, so they land in this uber-jar at their original
package. On an engine classpath they shadow the engine's own
copies; #3960 fixed exactly that for the filesystem plugins
after Spark hit NoSuchMethodError on a shadowed commons class.

Named individually rather than as org.apache.commons: the
shade plugin rewrites every reference matching a pattern,
including ones to classes this jar does not bundle. Only
lang3 and math3 are bundled; commons-codec and
commons-logging are referenced but come from elsewhere, and
relocating them would leave links that resolve nowhere. -->
<relocation>
<pattern>org.apache.commons.lang3</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons.lang3</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.math3</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons.math3</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
Expand Down
49 changes: 49 additions & 0 deletions fluss-filesystems/fluss-fs-azure/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -237,10 +237,59 @@
</filter>
</filters>
<relocations>
<!-- relocate the third-party packages bundled from
Hadoop and the cloud SDK so they cannot shadow a
downstream application's own copies, mirroring
fluss-fs-hadoop-shaded and fluss-fs-s3 -->
<relocation>
<pattern>com.google</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.azure.com.google
</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.htrace</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.azure.org.apache.htrace
</shadedPattern>
</relocation>
<relocation>
<pattern>com.fasterxml</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.azure.com.fasterxml
</shadedPattern>
</relocation>
<relocation>
<pattern>org.codehaus</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.azure.org.codehaus
</shadedPattern>
</relocation>
<relocation>
<pattern>com.ctc</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.azure.com.ctc
</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons</shadedPattern>
</relocation>
<relocation>
<pattern>io.netty</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.azure.io.netty
</shadedPattern>
<excludes>
<!-- netty-tcnative is a JNI wrapper around OpenSSL and its
native symbols bind to the io.netty.internal.tcnative
package name, so renaming it would break them. It is
referenced here but supplied from elsewhere, if at all;
leaving it alone keeps OpenSSL usable when the host
provides it and avoids references resolving nowhere. -->
<exclude>io.netty.internal.tcnative.**</exclude>
</excludes>
</relocation>
</relocations>
</configuration>
</execution>
Expand Down
49 changes: 49 additions & 0 deletions fluss-filesystems/fluss-fs-cos/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -257,10 +257,59 @@
</filter>
</filters>
<relocations>
<!-- relocate the third-party packages bundled from
Hadoop and the cloud SDK so they cannot shadow a
downstream application's own copies, mirroring
fluss-fs-hadoop-shaded and fluss-fs-s3 -->
<relocation>
<pattern>com.google</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.cos.com.google
</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.htrace</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.cos.org.apache.htrace
</shadedPattern>
</relocation>
<relocation>
<pattern>com.fasterxml</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.cos.com.fasterxml
</shadedPattern>
</relocation>
<relocation>
<pattern>org.codehaus</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.cos.org.codehaus
</shadedPattern>
</relocation>
<relocation>
<pattern>com.ctc</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.cos.com.ctc
</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons</shadedPattern>
</relocation>
<relocation>
<pattern>io.netty</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.cos.io.netty
</shadedPattern>
<excludes>
<!-- netty-tcnative is a JNI wrapper around OpenSSL and its
native symbols bind to the io.netty.internal.tcnative
package name, so renaming it would break them. It is
referenced here but supplied from elsewhere, if at all;
leaving it alone keeps OpenSSL usable when the host
provides it and avoids references resolving nowhere. -->
<exclude>io.netty.internal.tcnative.**</exclude>
</excludes>
</relocation>
</relocations>
</configuration>
</execution>
Expand Down
40 changes: 40 additions & 0 deletions fluss-filesystems/fluss-fs-gs/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,46 @@
</filter>
</filters>
<relocations>
<!-- relocate the third-party packages bundled from
Hadoop and the cloud SDK so they cannot shadow a
downstream application's own copies, mirroring
fluss-fs-hadoop-shaded and fluss-fs-s3 -->
<relocation>
<pattern>com.google.common</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.gs.com.google.common
</shadedPattern>
</relocation>
<relocation>
<pattern>com.google.re2j</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.gs.com.google.re2j
</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.htrace</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.gs.org.apache.htrace
</shadedPattern>
</relocation>
<relocation>
<pattern>com.fasterxml</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.gs.com.fasterxml
</shadedPattern>
</relocation>
<relocation>
<pattern>org.codehaus</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.gs.org.codehaus
</shadedPattern>
</relocation>
<relocation>
<pattern>com.ctc</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.gs.com.ctc
</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons</shadedPattern>
Expand Down
67 changes: 66 additions & 1 deletion fluss-filesystems/fluss-fs-hadoop-shaded/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -226,13 +226,78 @@
</includes>
</artifactSet>
<relocations>
<!-- we shade only the parts that are internal to Hadoop and not used / exposed downstream -->
<!-- Shade the third-party packages Hadoop drags in, so they cannot
shadow a downstream application's own copies. org.apache.hadoop
itself is deliberately left alone: the FileSystem SPI resolves
implementations by class name from configuration. -->
<!-- These patterns name individual packages rather than the
com.google / org.apache.commons prefixes on purpose. The shade
plugin rewrites every reference matching a pattern, including
references to classes this jar does not bundle, which would
leave dangling links. Hadoop here references but does not
bundle com.google.protobuf, com.google.gson, commons-cli,
commons-codec, commons-math3 and commons-net; relocating those
prefixes wholesale breaks the NameNode at runtime. Only
packages actually present below. -->
<relocation>
<pattern>com.google.common</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.hadoop3.com.google.common
</shadedPattern>
</relocation>
<relocation>
<pattern>com.google.j2objc</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.hadoop3.com.google.j2objc
</shadedPattern>
</relocation>
<relocation>
<pattern>com.google.thirdparty</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.hadoop3.com.google.thirdparty
</shadedPattern>
</relocation>
<relocation>
<pattern>com.google.re2j</pattern>
<shadedPattern>
org.apache.fluss.fs.shaded.hadoop3.com.google.re2j
</shadedPattern>
</relocation>
<!-- commons packages that are bundled here. The shaded target
matches what the filesystem plugins already use, so a plugin
bundling this jar ends up with one copy rather than two. -->
<relocation>
<pattern>org.apache.commons.beanutils</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons.beanutils</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.collections</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons.collections</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.compress</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons.compress</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.configuration2</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons.configuration2</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.io</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons.io</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.lang3</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons.lang3</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.logging</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons.logging</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.text</pattern>
<shadedPattern>org.apache.fluss.shaded.org.apache.commons.text</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.htrace</pattern>
<shadedPattern>
Expand Down
Loading
Loading