You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by "databird07 (via GitHub)" <gi...@apache.org> on 2026/10/16 04:39:42 UTC
[PR] chore(ci): reduce GitHub CI test runtime without losing coverage [hudi]
databird07 opened a new pull request, #20364:
URL: https://github.com/apache/hudi/pull/20364
### Describe the issue this Pull Request addresses
A GitHub CI run of `bot.yml` costs about 620 job-minutes per push (reference: run 38362333401). About 508 of those minutes are test steps and about 102 are builds. This PR collects measured changes that cut that cost without deleting test areas or losing coverage. Each change is a separate commit with a self-contained message (what, why, measurements), so any one of them can be dropped or reverted on its own.
### Summary and Changelog
Every change was measured locally (JDK 17, 4 pinned CPUs, JaCoCo on): 20 runs before and 20 after, with random method order where relevant, plus JaCoCo intersection/union diffs. Every line that lost coverage was traced to another test that still covers it.
| Commit | Change | Local result | Est. CI saving per push |
|---|---|---|---|
| `test(spark)` TestHoodieFileSystemViews | MDT-on only. Spill-to-disk writer view on every older supported version (6, 8, 9), both view types on the current version (10). Each table is written once and checked against both reader views | ~same runtime; ~750 more lines covered in every run (versions 9/10 were never tested here) | ~0 |
| `test(common)` TestBootstrapIndex | 10 instead of 50 validations per thread, still 20 concurrent readers | 50.2s -> 14.5s, identical coverage | ~1 min |
| `test(utilities)` DeltaStreamer matrices | Pairwise/half-fraction parameter rows, duplicate rows removed; versions 6/8/9/10 and COW/MOR kept | changed methods -29%, SchemaEvolutionQuick -21%, no class-level coverage loss | ~5 min |
| `test(utilities)` KafkaTestUtils | Wait for partition leaders and check send futures (fixes a flake that dropped records and timed out after 120s, hidden by reruns) | 25 clean runs of the 22 Kafka-source tests | reliability |
| `test(spark)` TestColumnStatsIndexWithSQL | Share tables across read-only cases with isolation guards. Also fixes the test never passing `tableVersion` to the writer, so v6/8/9 are really written now | -18%; always-covered lines 28,209 -> 30,174, none lost | ~2.5 min |
| `chore(ci)` two surefire forks | `test-spark-java17-java-tests-part1` runs two test JVMs with per-fork ports and JaCoCo files | full part1 step 3479s -> 2078s (-40%); 4211 tests, 0 failures in every run; 60 clean subset runs | ~29 min |
| `chore(ci)` build once | Three shared build jobs upload `target/` + hudi artifacts; test jobs restore instead of rebuilding | identical test counts and coverage locally; **first real GitHub Actions run is this PR** | ~30 min (projected) |
**Total:** about 68 job-minutes per push (~11%). Part1, the longest Java job, drops from ~74 to ~45 minutes. Wall-clock time is still bounded by the Scala "other" job (~74 min), which Maven forking doesn't help.
Not included (follow-ups): two forks on Java parts 2/3 and utilities (their profiles hard-code `forkCount=1`, and utilities needs fork-safe HiveServer2/Kafka ports), Scala job rebalancing, and Kafka-source tests that use their own producers without checking send results.
### Impact
CI and test code only; no production code changes. The test matrix changes are listed per commit. The one deliberate coverage tradeoff is no Spark-record StreamSync write to a v8 table (v8 still runs with Avro records; all combinations still run on the current version). The MDT-off file-system-view cases are removed because MDT-on is the supported mode, and the MDT-off writer paths stay covered by `TestHoodieBackedMetadata` and `TestHoodieTableFileSystemView`.
### Risk Level
medium. The two workflow changes are the risky part. Parallel test JVMs can expose shared-resource assumptions; this is mitigated by per-fork ports, 4 full-job runs and 60 repeated subset runs with random ordering. Build-once depends on restored outputs being treated as up to date (manifest checks on commit and profile set, re-stamped mtimes), and this PR's CI run is its first run on GitHub Actions. Both are single commits that can be dropped independently. The test-only commits are low risk.
### Documentation Update
none
### Contributor's checklist
- [x] Read through [contributor's guide](https://hudi.apache.org/contribute/how-to-contribute)
- [x] Enough context is provided in the sections above
- [x] Adequate tests were added if applicable
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] chore(ci): reduce GitHub CI test runtime without losing coverage [hudi]
Posted by "codecov-commenter (via GitHub)" <gi...@apache.org>.
codecov-commenter commented on PR #20364:
URL: https://github.com/apache/hudi/pull/20364#issuecomment-6209471694
## [Codecov](https://app.codecov.io/gh/apache/hudi/pull/20364?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report
:white_check_mark: All modified and coverable lines are covered by tests.
:white_check_mark: Project coverage is 77.69%. Comparing base ([`c167f7b`](https://app.codecov.io/gh/apache/hudi/commit/c167f7b392441cfb86b1dd64bb6c2708878e80d6?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`f100abb`](https://app.codecov.io/gh/apache/hudi/commit/f100abb22993e21b9c07dbca74d1349605937a95?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)).
:warning: Report is 1 commits behind head on master.
<details><summary>Additional details and impacted files</summary>
```diff
@@ Coverage Diff @@
## master #20364 +/- ##
============================================
- Coverage 80.73% 77.69% -3.04%
+ Complexity 35201 33832 -1369
============================================
Files 2553 2553
Lines 143629 143629
Branches 17504 17504
============================================
- Hits 115964 111598 -4366
- Misses 19703 23830 +4127
- Partials 7962 8201 +239
```
| [Components](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=components&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage Δ | |
|---|---|---|
| [hudi-common](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `82.10% <ø> (-2.07%)` | :arrow_down: |
| [hudi-client](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `78.35% <ø> (-5.60%)` | :arrow_down: |
| [hudi-flink](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `86.07% <ø> (ø)` | |
| [hudi-spark-datasource](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `66.97% <ø> (-7.23%)` | :arrow_down: |
| [hudi-utilities](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `78.19% <ø> (ø)` | |
| [hudi-cli](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `70.80% <ø> (ø)` | |
| [hudi-hadoop](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `69.00% <ø> (-2.18%)` | :arrow_down: |
| [hudi-sync](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `76.78% <ø> (ø)` | |
| [hudi-io](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `81.29% <ø> (-0.19%)` | :arrow_down: |
| [hudi-timeline-service](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `78.53% <ø> (-4.88%)` | :arrow_down: |
| [hudi-cloud](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `81.00% <ø> (ø)` | |
| [hudi-kafka-connect](https://app.codecov.io/gh/apache/hudi/pull/20364/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `57.90% <ø> (ø)` | |
| [Flag](https://app.codecov.io/gh/apache/hudi/pull/20364/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage Δ | |
|---|---|---|
| [hadoop-mr-java-client](https://app.codecov.io/gh/apache/hudi/pull/20364/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `21.48% <ø> (-22.47%)` | :arrow_down: |
| [spark-java-tests](https://app.codecov.io/gh/apache/hudi/pull/20364/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `1.63% <ø> (-51.16%)` | :arrow_down: |
Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#carryforward-flags-in-the-pull-request-comment) to find out more.
[see 401 files with indirect coverage changes](https://app.codecov.io/gh/apache/hudi/pull/20364/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)
</details>
<details><summary> :rocket: New features to boost your workflow: </summary>
- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] chore(ci): reduce GitHub CI test runtime without losing coverage [hudi]
Posted by "voonhous (via GitHub) via commits" <co...@hudi.apache.org>.
voonhous commented on PR #20364:
URL: https://github.com/apache/hudi/pull/20364#issuecomment-6701736088
Temporarily closing this PR while we debug a GitHub settings error on master (#20471); it will be reopened shortly, no action needed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] chore(ci): reduce GitHub CI test runtime without losing coverage [hudi]
Posted by "voonhous (via GitHub) via commits" <co...@hudi.apache.org>.
voonhous closed pull request #20364: chore(ci): reduce GitHub CI test runtime without losing coverage
URL: https://github.com/apache/hudi/pull/20364
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] chore(ci): reduce GitHub CI test runtime without losing coverage [hudi]
Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on PR #20364:
URL: https://github.com/apache/hudi/pull/20364#issuecomment-6494804226
Thank you for the contribution, what is done here overlaps alot with our umbrella task at #19910.
The overlaps i can see are:
1. 2 surefire forks (same as #19892)
2. Separate ports per fork (same as #19892)
3. Fix flink-2 re-running every hudi-flink unit test (same as #19909)
4. Remove duplicate builds (Same as #19909 and #19919)
5. Refactor Deltastreamer runtime (Saem as #19892)
Let's merge our stack first, then rework what are the remaining delta that hasn't been moved yet.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] chore(ci): reduce GitHub CI test runtime without losing coverage [hudi]
Posted by "databird07 (via GitHub)" <gi...@apache.org>.
databird07 commented on PR #20364:
URL: https://github.com/apache/hudi/pull/20364#issuecomment-6510308944
Sounds good. I ll rebase after thats landed. Any rough idea when that will land
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org