Skip to content

[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
apache:branch-0.4from
vinishjail97:736-jol-utilities-hudi0x
Open

[736] Make the bundled xtable-utilities jar runnable again (Hudi 0.x) + run CI on branch-0.4#841
vinishjail97 wants to merge 3 commits into
apache:branch-0.4from
vinishjail97:736-jol-utilities-hudi0x

Conversation

@vinishjail97

@vinishjail97 vinishjail97 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

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 on main (which has already moved to Hudi 1.x via #772). The headline 0.4.0 on-ramp is xtable-spark-runtime targeting 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 as main.


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-utilities jar, so java -jar … RunSync failed with NoClassDefFoundError. The Hudi-0.x-applicable subset:

Dropped from the original #840 (Hudi 1.x only): hudi-hadoop-common and hudi-io don't exist in Hudi 0.14 (that split is 1.x); hudi-common still provides org.apache.hudi.common.fs.FSUtils. There's also no redundant test-scoped hudi-java-client to 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.json and Iceberg metadata/v3.metadata.json + manifests written, the Hudi metadata table read (the jol/ObjectSizeCalculator path), zero NoClassDefFoundError, exit 0.

2. CI on main-hudi-0x

Adds main-hudi-0x to the push/pull_request branch triggers of Maven CI Build and License Check, so the existing CI runs for this long-lived branch and PRs targeting it, matching main. Release/site workflows unchanged.

3. Branch protection (.asf.yaml)

Mirrors main's rule for main-hudi-0x (1 required review). Caveat: ASF INFRA reads .asf.yaml from the default branch (main), so this entry is inert until it lands on main — it does not take effect from this main-hudi-0x PR. A separate one-line PR to main is required to actually enable protection (can also add required_status_checks once this PR's CI reports on main-hudi-0x).

🤖 Generated with Claude Code


Closes #736

vinishjail97 and others added 2 commits July 9, 2026 11:38
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 vinishjail97 marked this pull request as ready for review July 9, 2026 18:51
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>
@vinishjail97 vinishjail97 force-pushed the 736-jol-utilities-hudi0x branch from 46823b4 to 043c82b Compare July 13, 2026 15:54
@vinishjail97 vinishjail97 changed the title [736] Make the bundled xtable-utilities jar runnable again (Hudi 0.x) + run CI on main-hudi-0x [736] Make the bundled xtable-utilities jar runnable again (Hudi 0.x) + run CI on branch-0.4 Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant