Skip to content

[CELEBORN-2408] Exclude unused Netty QUIC/HTTP3 modules from shaded clients - #3787

Open
yew1eb wants to merge 1 commit into
apache:mainfrom
yew1eb:CELEBORN-2408
Open

[CELEBORN-2408] Exclude unused Netty QUIC/HTTP3 modules from shaded clients#3787
yew1eb wants to merge 1 commit into
apache:mainfrom
yew1eb:CELEBORN-2408

Conversation

@yew1eb

@yew1eb yew1eb commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

What changes were proposed in this pull request?

Exclude netty-codec-http3, netty-codec-classes-quic, and netty-codec-native-quic from the netty-all dependency in the root pom's dependencyManagement.

Why are the changes needed?

Since the Netty 4.1.1184.2.10.Final upgrade, netty-all pulls in the QUIC/HTTP3 stack that 4.2 merged into the mainline:

netty-all
  └─ netty-codec-http3          (compile)
       └─ netty-codec-classes-quic   (compile)
            └─ netty-codec-native-quic (runtime, 5 classifiers)

netty-codec-native-quic ships a libnetty_quiche42_* native library per platform classifier (linux-x86_64, linux-aarch_64, osx-x86_64, osx-aarch_64, windows-x86_64) — ~29MB uncompressed / ~15MB compressed in total, plus 156 QUIC classes + 112 HTTP3 classes.

Because every *-shaded module uses maven-shade-plugin with <include>io.netty:*</include>, the wildcard drags all of the above into every shaded client jar. As a result celeborn-client-spark-3-shaded grew from 15MB (0.6.3, Netty 4.1.118) to 27MB (1.0.0-SNAPSHOT, Netty 4.2.10). The same bloat applies to all 11 shaded modules (spark-3/4, flink 1.18~2.3, mr, tez) and to the runtime classpath of common/client/master/service/worker.

Celeborn only uses Netty TCP RPC; a full-repo grep confirms zero references to codec.quic / codec.http3 / quiche in source. These are pure dead weight.

Excluding them at the netty-all declaration (inherited by all modules via dependencyManagement) drops the shaded jars back to ~15MB with no functional impact.

Does this PR resolve a correctness bug?

  • Yes

Does this PR introduce any user-facing change?

  • Yes

How was this patch tested?

  • Built celeborn-client-spark-3-shaded (spark-3.5 profile) and celeborn-client-flink-1.20-shaded (flink-1.20 profile). Each jar shrank from 27MB to 15MB, with zero *quiche* native libs and zero handler/codec/quic/** / handler/codec/http3/** classes.
  • Verified epoll/kqueue native libs (renamed by antrun) remain present.
  • mvn dependency:tree on common: quic dependency nodes dropped from 7 → 0 after the exclusion, confirming it takes effect at the dependency resolution layer for all inheriting modules.

@yew1eb
yew1eb force-pushed the CELEBORN-2408 branch 2 times, most recently from a45fc9d to 2ea3bd0 Compare August 7, 2026 09:26
…lients

Netty 4.2 merged the QUIC/HTTP3 stack into netty-all: netty-codec-http3
-> netty-codec-classes-quic -> netty-codec-native-quic. The latter ships a
libnetty_quiche42_* native library per platform classifier
(linux/osx/windows x86_64/aarch_64), ~29MB uncompressed. Since every
*-shaded module uses maven-shade-plugin with <include>io.netty:*</include>,
all of it lands in every shaded client jar, which grew
celeborn-client-spark-3-shaded from 15MB (0.6.3, Netty 4.1.118) to 27MB
(1.0.0-SNAPSHOT, Netty 4.2.10).

Celeborn only uses Netty TCP RPC; a full-repo grep confirms zero
references to codec.quic / codec.http3 / quiche in source. Exclude the
whole trio at the netty-all declaration in both pom.xml (maven build) and
project/CelebornBuild.scala (sbt build), since sbt does not inherit maven
exclusions.

Also update the dev/deps/dependencies-* snapshots (19 files) to drop the
removed quic artifacts, so the maven/sbt dependency-list CI checks stay
green.

Verified:
- spark-3-shaded and flink-1.20-shaded jars drop from 27MB to 15MB,
  with zero quiche native libs and zero quic/http3 classes.
- epoll/kqueue native libs (renamed by antrun) remain present.
- common dependency:tree: quic nodes 7 -> 0 after the exclusion.
- ./dev/dependencies.sh --check --module spark-3.5 (maven): no diff.
- ./dev/dependencies.sh --sbt --check --module service / spark-3.5: no diff.
@yew1eb yew1eb closed this Aug 8, 2026
@yew1eb yew1eb reopened this Aug 8, 2026
@yew1eb yew1eb closed this Aug 8, 2026
@yew1eb yew1eb reopened this Aug 8, 2026
@yew1eb yew1eb closed this Aug 8, 2026
@yew1eb yew1eb reopened this Aug 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant