[736] Make the bundled xtable-utilities jar runnable again (Hudi 0.x) + run CI on branch-0.4#841
Open
vinishjail97 wants to merge 3 commits into
Open
Conversation
Cherry-pick of apache#840 (4daec27) adapted for the Hudi 0.14 line on main-hudi-0x. The apache#736 root cause applies here too: the apache#822 shade allowlist dropped runtime deps from the bundled utilities jar, so java -jar RunSync failed with NoClassDefFoundError. Applicable subset for Hudi 0.x: - jol-core: the parent pins it to test scope, but Hudi's ObjectSizeCalculator loads org.openjdk.jol at runtime; override to runtime and add to the shade allowlist (the actual apache#736 fix). - slf4j-api: add to the allowlist (org/slf4j/LoggerFactory was missing). Dropped from the original apache#840 (Hudi 1.x only): hudi-hadoop-common and hudi-io do not exist in Hudi 0.14 (that split is 1.x); hudi-common still provides org.apache.hudi.common.fs.FSUtils. There is also no redundant test-scoped hudi-java-client to remove on this branch. Verified: the 0.x bundled jar now contains org/slf4j/LoggerFactory, org/openjdk/jol/info/GraphLayout, org/apache/hudi/common/fs/FSUtils and org/apache/hudi/client/common/HoodieJavaEngineContext. Cherry picked from commit 4daec27. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add main-hudi-0x to the push and pull_request branch triggers so the existing CI (build + test, license check) runs for the long-lived Hudi 0.x branch and PRs targeting it, matching main. package-deploy (release-triggered) and the site workflows are unchanged. The concurrency guard already treats any ref containing "main" as non-cancelable, so main-hudi-0x is covered without further changes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
vinishjail97
added a commit
to vinishjail97/onetable
that referenced
this pull request
Jul 10, 2026
Add main-hudi-0x to the push and pull_request branch filters of both workflows (same change as apache#841) so CI runs on PRs targeting the Hudi 0.x release line, including this one. A pull_request workflow's branch filter takes effect from the PR's own branch, so this makes CI fire on apache#843. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The release branch was renamed main-hudi-0x -> branch-0.4 to use a version-keyed name instead of a dependency-keyed one. Update the push / pull_request triggers so Maven CI Build and License Check run on the renamed branch. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
46823b4 to
043c82b
Compare
4 tasks
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.
Why (context)
Per the [DISCUSS] rc1 for XTable 0.4.0 thread, 0.4.0 is being cut from the Hudi 0.x line (
main-hudi-0x). Hudi table-format v9 (#834) and cross-format indexing are deferred to 0.5.0 onmain(which has already moved to Hudi 1.x via #772). The headline 0.4.0 on-ramp isxtable-spark-runtimetargeting Hudi 0.x (#836/#838), alongside Parquet source (#768), Paimon, and the Delta Kernel target (#801). This PR is part of readying that Hudi-0.x release branch: it makes the bundled utilities jar runnable again and gives the branch the same CI + protection asmain.Backports #840 to the Hudi 0.x line (
main-hudi-0x), wires up CI for that branch, and mirrors branch protection.1.
[736]utilities bundle fix (cherry-pick of #840, adapted for Hudi 0.14)Same root cause as #840/#736: the #822 shade allowlist dropped runtime deps from the bundled
xtable-utilitiesjar, sojava -jar … RunSyncfailed withNoClassDefFoundError. The Hudi-0.x-applicable subset:test, but Hudi'sObjectSizeCalculatorloadsorg.openjdk.jolat runtime; overridden toruntimeand added to the shade allowlist (the actual Missing org.openjdk.jol from imported dependencies in xtable-utilities makes it to fail with NoClassDefFoundError #736 fix).org/slf4j/LoggerFactorywas missing).Dropped from the original #840 (Hudi 1.x only):
hudi-hadoop-commonandhudi-iodon't exist in Hudi 0.14 (that split is 1.x);hudi-commonstill providesorg.apache.hudi.common.fs.FSUtils. There's also no redundant test-scopedhudi-java-clientto remove on this branch.Validated end-to-end per the how-to: created a partitioned Hudi source table, then ran
java -jar xtable-utilities_2.12-0.2.0-SNAPSHOT-bundled.jar --datasetConfig my_config.yaml(HUDI → DELTA, ICEBERG). Result:_delta_log/00000000000000000000.jsonand Icebergmetadata/v3.metadata.json+ manifests written, the Hudi metadata table read (the jol/ObjectSizeCalculatorpath), zeroNoClassDefFoundError, exit 0.2. CI on
main-hudi-0xAdds
main-hudi-0xto thepush/pull_requestbranch triggers of Maven CI Build and License Check, so the existing CI runs for this long-lived branch and PRs targeting it, matchingmain. Release/site workflows unchanged.3. Branch protection (
.asf.yaml)Mirrors
main's rule formain-hudi-0x(1 required review). Caveat: ASF INFRA reads.asf.yamlfrom the default branch (main), so this entry is inert until it lands onmain— it does not take effect from thismain-hudi-0xPR. A separate one-line PR tomainis required to actually enable protection (can also addrequired_status_checksonce this PR's CI reports onmain-hudi-0x).🤖 Generated with Claude Code
Closes #736