Skip to content

feat(release): add a JDK 25 staging path for org.apache.hudi:hudi-trino - #19410

Open
voonhous wants to merge 1 commit into
apache:masterfrom
voonhous:hudi-trino-release-staging
Open

feat(release): add a JDK 25 staging path for org.apache.hudi:hudi-trino#19410
voonhous wants to merge 1 commit into
apache:masterfrom
voonhous:hudi-trino-release-staging

Conversation

@voonhous

@voonhous voonhous commented Jul 29, 2026

Copy link
Copy Markdown
Member

Describe the issue this Pull Request addresses

Closes #19346. Part of RFC-105 (#18780), raised in review of #18837: no release path built or staged org.apache.hudi:hudi-trino. The existing staging scripts abort unless JAVA_HOME is JDK 11 (deploy_staging_jars.sh) or JDK 17 (deploy_staging_jars_java17.sh), neither passes -Phudi-trino, and the legacy hudi-trino-bundle was dropped in #18837, while the module itself enforces JDK 25. The Trino-side shim depends on this artifact, so it must be staged with the first 1.3.0 RC.

Summary and Changelog

Adds a JDK 25 staging path so org.apache.hudi:hudi-trino is deployed alongside the other release artifacts.

  • scripts/release/deploy_staging_jars_java25.sh (new): mirrors the java17 script but runs a single pass, mvn deploy -Phudi-trino -pl hudi-trino, deliberately without -am. Lombok cannot run on JDK 25, so the upstream Hudi modules (hudi-common, hudi-hive-sync, hudi-io:shaded, hudi-sync-common) resolve from the local m2 populated by the prior deploy_staging_jars.sh (JDK 11) run.
  • hudi-trino/pom.xml: overrides the release profile's javadoc source level (pinned to 11 by the root pom) to ${hudi.trino.java.version}. At source 11, javadoc errors on records and unnamed variables, and failOnError=false turns that into a silently broken -javadoc.jar in the staging repo.
  • scripts/release/validate_staged_bundles.sh: now checks org.apache.hudi:hudi-trino across all 16 jar/sources/javadoc/pom + signature/checksum extensions.
  • release/release_guide.md: documents the JDK 25 deploy step (deploy3 log) and the extra copy_staging_repo.sh pass for the JDK 25 staging repo.
  • The source release tarball needs no change: create_source_directory.sh rsyncs the full git clone, so hudi-trino/ ships regardless of the profile. A stale bot.yml comment citing the removed hudi-trino-plugin RAT exclude is reworded.

Impact

Release tooling and docs only; no runtime code change. Starting with 1.3.0, org.apache.hudi:hudi-trino is staged and validated like the other release artifacts.

Risk Level

low. Verified locally: upstream modules installed under JDK 17, then a clean mvn install -Phudi-trino -pl hudi-trino -DdeployArtifacts=true -Dgpg.skip under JDK 25 produces the main, sources, and javadoc jars with record classes documented; without the pom override, javadoc fails with records are not supported in -source 11 and the build still exits 0 with a broken javadoc jar. GPG signing (maven-gpg-plugin 1.4 under a JDK 25 Maven) will be exercised in the first real staging run.

Documentation Update

release/release_guide.md is updated in this PR; no website change needed.

Contributor's checklist

  • Read through contributor's guide
  • Enough context is provided in the sections above
  • Adequate tests were added if applicable

No release path built or staged org.apache.hudi:hudi-trino: the existing
staging scripts require JDK 11 and JDK 17, neither passes -Phudi-trino, and
the legacy hudi-trino-bundle was dropped in apache#18837, while the Trino-side
shim depends on this artifact, so it must be staged with the first 1.3.0 RC.

- deploy_staging_jars_java25.sh mirrors the java17 script but runs a single
  pass, mvn deploy -Phudi-trino -pl hudi-trino, without -am: Lombok cannot
  run on JDK 25, so the upstream Hudi modules resolve from the local m2
  populated by the prior deploy_staging_jars.sh (JDK 11) run.
- hudi-trino/pom.xml overrides the release profile's javadoc source level
  (pinned to 11 by the root pom) to hudi.trino.java.version. At source 11,
  javadoc errors on records and unnamed variables, and failOnError=false
  turns that into a silently broken -javadoc.jar in the staging repo.
- validate_staged_bundles.sh now checks org.apache.hudi:hudi-trino across
  all 16 jar/sources/javadoc/pom + signature/checksum extensions.
- release_guide.md documents the JDK 25 deploy step (deploy3 log) and the
  extra copy_staging_repo.sh pass for the JDK 25 staging repo.
- The source tarball needs no change: create_source_directory.sh rsyncs the
  full git clone, so hudi-trino/ ships regardless of the profile. A stale
  bot.yml comment citing the removed hudi-trino-plugin RAT exclude is
  reworded.

Verified locally: upstream modules installed under JDK 17, then a clean
mvn install -Phudi-trino -pl hudi-trino -DdeployArtifacts=true -Dgpg.skip
under JDK 25 produces the main, sources, and javadoc jars, with record
classes documented; without the pom override the javadoc jar is broken.

Fixes apache#19346

@hudi-agent hudi-agent left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ 🤖 This review was generated by an AI agent and may contain mistakes. Please verify any suggestions before applying.

Thanks for working on this! This PR adds a JDK 25 staging path so org.apache.hudi:hudi-trino gets built, deployed, and validated alongside the other release artifacts, plus the matching release-guide steps and a javadoc source-level override. It's release tooling and docs only, with no runtime code change. One edge case around the javadoc override is worth double-checking in the inline comment. Please take a look, and this should be ready for a Hudi committer or PMC member to take it from here.

cc @yihua

Comment thread hudi-trino/pom.xml
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<!-- The parent release profile pins javadoc source to 11; records need 25. -->
<source>${hudi.trino.java.version}</source>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Have you confirmed the effective javadoc source is actually 25 during the release deploy? The <source> here lives in the module's base build, while the pin to 11 comes from the parent's property-activated release profile. Child build config should win over an inherited-profile config, but since failOnError=false turns a wrong value into a silently broken -javadoc.jar and validate_staged_bundles.sh only checks the jar exists (not that it's valid), it'd be reassuring to verify via mvn help:effective-pom -DdeployArtifacts=true -pl hudi-trino that the resolved javadoc source is 25.

⚠️ AI-generated; verify before applying. React 👍/👎 to flag quality.

@github-actions github-actions Bot added the size:M PR with lines of changes in (100, 300] label Jul 29, 2026
@voonhous

Copy link
Copy Markdown
Member Author

@wombatu-kun Can you please help review this too? Thank you.

@codecov-commenter

codecov-commenter commented Jul 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 75.26%. Comparing base (c2ebc23) to head (bc95ea7).

Additional details and impacted files
@@             Coverage Diff              @@
##             master   #19410      +/-   ##
============================================
- Coverage     75.27%   75.26%   -0.02%     
+ Complexity    32510    32501       -9     
============================================
  Files          2574     2574              
  Lines        142991   142991              
  Branches      17529    17529              
============================================
- Hits         107636   107620      -16     
- Misses        27289    27302      +13     
- Partials       8066     8069       +3     
Components Coverage Δ
hudi-common 82.25% <ø> (+<0.01%) ⬆️
hudi-client 81.77% <ø> (-0.02%) ⬇️
hudi-flink 81.93% <ø> (-0.08%) ⬇️
hudi-spark-datasource 68.34% <ø> (+<0.01%) ⬆️
hudi-utilities 71.18% <ø> (-0.04%) ⬇️
hudi-cli 15.32% <ø> (ø)
hudi-hadoop 63.49% <ø> (ø)
hudi-sync 70.67% <ø> (ø)
hudi-io 79.57% <ø> (ø)
hudi-timeline-service 83.74% <ø> (+0.29%) ⬆️
hudi-cloud 64.00% <ø> (ø)
hudi-kafka-connect 53.20% <ø> (ø)
Flag Coverage Δ
common-and-other-modules 48.54% <ø> (+<0.01%) ⬆️
flink-integration-tests 48.34% <ø> (-0.03%) ⬇️
hadoop-mr-java-client 43.39% <ø> (+<0.01%) ⬆️
integration-tests 13.63% <ø> (-0.01%) ⬇️
spark-client-hadoop-common 48.71% <ø> (-0.01%) ⬇️
spark-java-tests 51.38% <ø> (+<0.01%) ⬆️
spark-scala-tests 46.10% <ø> (+0.01%) ⬆️
utilities 36.65% <ø> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 14 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@hudi-bot

Copy link
Copy Markdown
Collaborator

CI report:

Bot commands @hudi-bot supports the following commands:
  • @hudi-bot run azure re-run the last Azure build

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M PR with lines of changes in (100, 300]

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] hudi-trino: add a release staging path for org.apache.hudi:hudi-trino

5 participants