voonhous opened a new pull request, #19890:
URL: https://github.com/apache/hudi/pull/19890

   ### Describe the issue this Pull Request addresses
   
   Part of the CI improvement epic #19524 (wall-clock stream, #19528 and 
#19530).
   
   Every Java CI run waits for a shared ASF runner twice. The `changes` job 
lists the PR's files in about four seconds, but the 14 test jobs `need` it, so 
they cannot enter the runner queue until it has finished. Measured over 135 
recent runs, the second wait costs the same as the first: 1 to 3 minutes when 
the pool is quiet and 20 to 270 minutes when it is busy. This PR removes the 
second wait without changing what runs.
   
   ### Summary and Changelog
   
   - `bot.yml`: the `changes` job and every `needs: changes` and step-level 
`if` are gone. The docs-only skip moves to a trigger-level `paths` filter, 
which GitHub evaluates before creating any job. The filter no longer ignores 
yml/yaml: docker/compose files drive the integration tests, several modules 
keep yml test resources, and a PR that only edits a workflow file should run 
it. The commented `[CI-TRIM]` blocks get the same edit so a restored lane works 
as-is.
   - `validate_source.yml` (new): `validate-source` and `validate-ci-baseline`, 
moved verbatim. Both are required status checks in `.asf.yaml`, and a 
path-filtered workflow is never instantiated for PRs that miss the filter, so 
they cannot stay in a path-filtered `bot.yml`. Job ids, and therefore the 
required context names, are unchanged.
   - `java_ci_engines.yml` (new): the Flink, bundle-validation and 
integration-test jobs, moved verbatim, so each workflow stays under the ASF 
target of 15 concurrent jobs. `bot.yml` keeps the Spark lanes.
   - `concurrency.group` now includes the workflow name so the three workflows 
cancel only their own superseded runs.
   
   No job body changed beyond the flattening edits; a script compared every 
moved block against the original.
   
   ### Impact
   
   Execution time is unchanged. What changes is the wait: one trip through the 
shared queue per run instead of two. On a busy day that is the largest single 
item on the critical path.
   
   A docs-only PR now creates no Java CI run at all instead of 17 no-op jobs. 
No required check lives in the path-filtered workflows, so merging is 
unaffected.
   
   <details>
   <summary>Measurements behind this change</summary>
   
   Queue wait per hop, Java CI on master, 135 runs ending 2026-09-10:
   
   | | hop 1 (changes queued) | hop 2 (tests queued after changes) |
   |---|---|---|
   | median | 4 min | 1 min |
   | p90 | 85 min | 82 min |
   | worst observed | 311 min | 268 min |
   
   `changes` itself runs for 2 to 10 seconds. The follow-up work (fork count, 
resharding the 60 to 77 minute test steps, draft-PR gating) is tracked on the 
epic.
   </details>
   
   ### Risk Level
   
   low
   
   Workflow files only, reversible by restoring `bot.yml`. Checked with 
`actionlint`, a YAML parse asserting the job sets and the absence of `needs`, 
and a block-by-block comparison against the original.
   
   ### Documentation Update
   
   `.github/workflows/README.md` describes the three workflows.
   
   ### 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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to