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]
