gengliangwang opened a new pull request, #56152:
URL: https://github.com/apache/spark/pull/56152

   ### What changes were proposed in this pull request?
   
   Splits the `core, unsafe, kvstore, avro, utils, utils-java, network-common, 
network-shuffle, repl, launcher, examples, sketch, variant` build matrix entry 
in `build_and_test.yml` into two:
   
   - `core, unsafe, kvstore, utils, utils-java, network-common, 
network-shuffle, sketch, variant, launcher` — foundational modules under 
`common/` (plus `launcher/`) whose only dependency is `tags`.
   - `avro, repl, examples` — modules that are transitive dependents of 
`sql`/`hive` and naturally need to run when those change.
   
   Adds a new `build-core-utils` precondition (computed via `is-changed.py` 
against just the foundational module list) and a matrix `exclude` rule that 
drops the first entry when `build-core-utils == 'false'`. The check is opt-out: 
missing/unset means run, so periodic full-build workflows that only set 
`"build": "true"` continue to run this entry unchanged.
   
   ### Why are the changes needed?
   
   Today, any PR that triggers the `build` job runs every matrix entry, 
including the foundational core/utils group, even when the PR only touches SQL 
or PySpark code. Because `is-changed.py` propagates changes forward (to 
dependents), SQL/PySpark changes never make core/utils tests stale, so the 
runner spend is wasted.
   
   After this change:
   
   - SQL-only / PySpark-only PR → `build-core-utils=false` → the core/utils 
runner is skipped. The `avro, repl, examples` runner still fires because those 
modules are transitive dependents of `sql`/`hive`.
   - Core/utils PR → `build-core-utils=true` → entry runs as before.
   - Periodic full-build workflows (e.g. `build_java21.yml`) → no 
`build-core-utils` key, opt-out semantics keeps the entry running.
   
   ### Does this PR introduce _any_ user-facing change?
   
   No.
   
   ### How was this patch tested?
   
   Validated the workflow YAML parses and that the literal string used in the 
`exclude` expression matches the matrix entry string exactly (so the exclude 
rule actually fires).
   
   ### Was this patch authored or co-authored using generative AI tooling?
   
   Generated-by: Claude Code


-- 
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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to