fix(deps, v1.2): upgrade Apache Arrow to 19.0.0 and Netty to 4.2.15.Final#6212
Conversation
…inal Backport of apache#6185 to release/v1.2, also folding in the computing-unit-managing-service startup fix from apache#6209 (issue apache#6206) so the Arrow upgrade never breaks that service's startup. Source changes were hand-applied rather than cherry-picked (release/v1.2's build.sbt differs structurally from main: no Resource/NotebookMigrationService, asfLicensingSettings, hadoop 3.3.1, no log4j-2 bridges). The 8 LICENSE-binary(-java)/NOTICE-binary manifests were regenerated from release/v1.2's own resolved runtime classpath, not copied from main. (backported from commit 4473a25)
Automated Reviewer SuggestionsBased on the
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## release/v1.2 #6212 +/- ##
==================================================
- Coverage 52.07% 52.06% -0.01%
+ Complexity 2490 2486 -4
==================================================
Files 1065 1065
Lines 41315 41315
Branches 4424 4424
==================================================
- Hits 21514 21511 -3
- Misses 18536 18539 +3
Partials 1265 1265
*This pull request uses carry forward flags. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Backport to release/v1.2 that upgrades the Arrow Flight stack to Apache Arrow 19.0.0 together with a coordinated Netty family move to 4.2.15.Final, while adding dependency overrides to avoid known runtime incompatibilities (notably the Arrow/Netty coupling and the jackson-module-scala vs jackson-databind version range issue). It also refreshes the binary licensing manifests to match the new resolved runtime classpaths.
Changes:
- Upgrade Arrow Flight dependencies to
19.0.0and remove the deprecatedflight-grpcusage in favor offlight-core. - Centralize/pin Netty
4.2.15.Finalvia shared overrides across Amber + Arrow-bundling services. - Regenerate
LICENSE-binary/NOTICE-binarymanifests for the affected distributions to reflect the new dependency graph.
Reviewed changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
build.sbt |
Introduces shared Netty override list; applies Netty/Jackson overrides across Amber and platform services. |
common/workflow-core/build.sbt |
Updates Arrow/Netty versions and adds dependency overrides for Netty + Jackson core family. |
common/workflow-operator/build.sbt |
Adds Jackson core-family overrides to keep jackson-module-scala compatible under Arrow 19 transitive deps. |
amber/NOTICE-binary |
Refreshes third-party notices for the new resolved runtime dependencies. |
amber/LICENSE-binary-java |
Updates jar inventory for Amber’s Java distribution after dependency upgrades. |
file-service/NOTICE-binary |
Refreshes third-party notices for updated resolved runtime dependencies. |
file-service/LICENSE-binary |
Updates jar inventory for FileService distribution after dependency upgrades. |
workflow-compiling-service/NOTICE-binary |
Refreshes third-party notices for updated resolved runtime dependencies. |
workflow-compiling-service/LICENSE-binary |
Updates jar inventory for WorkflowCompilingService distribution after dependency upgrades. |
computing-unit-managing-service/NOTICE-binary |
Refreshes third-party notices for updated resolved runtime dependencies. |
computing-unit-managing-service/LICENSE-binary |
Updates jar inventory for ComputingUnitManagingService distribution after dependency upgrades. |
Comments suppressed due to low confidence (1)
common/workflow-core/build.sbt:136
- The Netty pinning list in workflow-core has the same gap as the root nettyDependencyOverrides: netty-codec-base and netty-codec-compression are present in service runtime jars, but aren’t included in dependencyOverrides here. If any transitive brings these at a different version, the Netty family can still split.
"io.netty" % "netty-buffer" % nettyVersion,
"io.netty" % "netty-codec" % nettyVersion,
"io.netty" % "netty-codec-http" % nettyVersion,
"io.netty" % "netty-codec-http2" % nettyVersion,
"io.netty" % "netty-codec-socks" % nettyVersion,
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Yicong-Huang
left a comment
There was a problem hiding this comment.
LGTM. also needs @xuang7 's stamp.
xuang7
left a comment
There was a problem hiding this comment.
LGTM! There are some conflicts.
Resolve conflicts with apache#6202 (replace EOL log4j 1.2 with log4j 2.26.1 bridges), which landed on release/v1.2 after this backport branched. - build.sbt: keep both additions — the coordinated Netty 4.2 family (nettyVersion + nettyDependencyOverrides) from this PR and the build-wide `ExclusionRule("log4j", "log4j")` from apache#6202. - common/workflow-core/build.sbt: auto-merged; carries both the Netty/ Jackson overrides and the log4j 2.x bridge dependencies. - The four LICENSE-binary / NOTICE-binary manifests were regenerated from each service's resolved Runtime/managedClasspath on the merged build (Arrow 19 + Netty 4.2 + Jackson pins + log4j 2.26.1 bridges), so they reflect the combined third-party jar set. check_binary_deps.py passes (strict and --ignore-transitive-version) for amber / file-service / computing-unit-managing-service / workflow-compiling-service, and generate_notice_binary.py reproduces every NOTICE-binary byte-for-byte. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Resolve conflicts with apache#6203 (hadoop-common 3.4.3 backport), which landed on release/v1.2 after this branch last synced and touched the same 10 files. - amber/build.sbt, common/workflow-core/build.sbt: took both sides — hadoop 3.4.3 + the com.github.pjfanning:jersey-json fork exclusion (from apache#6203) alongside Arrow 19 / Netty 4.2.15 / the jackson-databind 2.18.8 pins (this branch). Both auto-merged cleanly. - The 8 LICENSE-binary(-java) / NOTICE-binary manifests were regenerated from this branch's own resolved Runtime/managedClasspath after the merge (Arrow 19 + Netty 4.2 + Hadoop 3.4.3), not hand-merged: the two upgrades' transitive cascades interact under max-wins eviction (guava pulls j2objc-annotations 3.1 while hadoop pulls guice 4.2.3), so neither side's manifest is correct alone. check_binary_deps.py passes in strict and --ignore-transitive-version modes for all four services (398/302/314/339 JVM jars) and generate_notice_binary.py reproduces each NOTICE-binary byte-for-byte.
Resolve NOTICE-binary conflicts with apache#6212 (arrow 19.0.0 / netty 4.2.15) by regenerating all four manifests from freshly built dists on the merged tree; check_binary_deps.py (strict) passes for every dist. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What changes were proposed in this PR?
Backport of #6185 to
release/v1.2: upgrade Apache Arrow15.0.2 → 19.0.0and the Netty family4.1.x → 4.2.15.Finalas one coordinated move.arrow-memory-nettyreaches into Netty's allocator internals, so the 4.1/4.2 line cannot split — a split throwsNoClassDefFoundError: io/netty/util/concurrent/ThreadAwareExecutoron the Arrow Flight transport to the Python workers. Arrow 19 is the first release targeting the Netty 4.2 line, so the two move together. The standaloneflight-grpcartifact (discontinued after 15.0.2) is dropped — its gRPC transport now lives insideflight-core. The Netty family is extracted into a sharednettyDependencyOverridesval applied to amber and the three Arrow-bundling platform services, and the Jackson core family is pinned to2.18.8inworkflow-core/workflow-operator(Arrow 19 otherwise evictsjackson-databindpast the>= 2.18.0, < 2.19.0rangejackson-module-scalaallows).Update: this PR also folds in the
computing-unit-managing-servicestartup fix from #6209 (issue #6206), so the Arrow upgrade lands onrelease/v1.2without ever breaking that service's startup. #6185 pinnedjackson-databindinworkflow-core/workflow-operatorand infile-service/workflow-compiling-service, but not incomputing-unit-managing-service, whose dist consequently bundledjackson-databind-2.21.0.jarnext tojackson-module-scala 2.18.8and aborted at boot withScala module 2.18.8 requires Jackson Databind version >= 2.18.0 and < 2.19.0 - Found jackson-databind version 2.21.0. The fix adds thejackson-databindoverride to that service too (matchingfile-service/workflow-compiling-service).Notes on how the backport was produced:
release/v1.2'sbuild.sbtis structurally different frommain's (noResourcemodule orNotebookMigrationService,asfLicensingSettingsrather thancommonModuleSettings, hadoop 3.3.1, no log4j-2 bridges), so a raw cherry-pick of fix(deps): upgrade Apache Arrow to 19.0.0 and Netty to 4.2.15.Final #6185's squash would drag in unrelated structure. Only the Arrow/Netty/Jackson semantics from fix(deps): upgrade Apache Arrow to 19.0.0 and Netty to 4.2.15.Final #6185 + fix(deps): pin jackson-databind to 2.18.8 in computing-unit-managing-service #6209 were ported; thecommon/workflow-operator/build.sbthunk is byte-identical to fix(deps): upgrade Apache Arrow to 19.0.0 and Netty to 4.2.15.Final #6185's.LICENSE-binary(-java) /NOTICE-binarymanifests were regenerated fromrelease/v1.2's own resolved runtime classpath, not copied frommain.main's manifests reflect deps this branch does not have (hadoop 3.4.3, the log4j-2 bridges), so their transitive tails differ. On this branch the cascade resolves to grpc1.62 → 1.79.0, protobuf-java3.25 → 4.33.4(+ newprotobuf-java-util), the nettynetty-codec → netty-codec-base/netty-codec-compressionsplit, newarrow-memory-netty-buffer-patchandorg.jspecify:jspecify 1.0.0,guava → 33.5.0-android;flight-grpcandeclipse-collectionsdrop out.Any related issues, documentation, discussions?
Backports #6185 (merged to
main). Also includes the fix from #6209 for #6206 (startup regression introduced by #6185). Norelease/*label is added — this PR is the backport.How was this PR tested?
The binary-licensing manifests were verified the same way CI checks them, against each module's resolved
Runtime/managedClasspathon this branch (which equals the dist's third-party jar set):check_binary_deps.py jar --license-binary <manifest> <lib>passes for all four services in both strict (nightly) mode and--ignore-transitive-version(PR) mode:OK: 407 / 311 / 323 / 350 JVM jars match LICENSE-binaryfor amber / file-service / workflow-compiling-service / computing-unit-managing-service.generate_notice_binary.pyreproduces each committedNOTICE-binarybyte-for-byte (regenerate-and-diff is clean for all four), matching the CI NOTICE check.sbt export <Service>/Runtime/managedClasspathresolves cleanly for all four services with Arrow 19 + Netty 4.2 (no eviction or resolution errors);computing-unit-managing-servicenow resolvesjackson-databind-2.18.8.jar(was2.21.0).Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Opus 4.8 [1M context])