Hi Spark project,

Further to my last mail of 2026-06-12 14:55:
https://lists.apache.org/thread.html/wsqbg8jplfnwrx6p0gsl23rh76hlxs2t
, we are seeing your project in the top 5 of the list for consumption of
GitHub hosted Actions runners for the past week, therefore we require you to
review your usage and the workflows that are consuming those Runner resources
and to make any improvements that can be made to reduce this usage.
If the usage remains high your access to GitHub Actions may be removed per
the policy quoted above.

In addition to the information I provided last time, I have included
some suggestions from prompting Claude to examine your project repo's
workflow code thus, "Analyze the GitHub Actions workflows in this repo
and suggest changes that would be beneficial for the goal of a)
Reducing the number of concurrent workflow jobs started and b) The
duration of the jobs that do start https://github.com/apache/spark";

The suggested changes are listed below, of course generated by GenAI,
so use your discretion and own reading there and I am no GitHub
Actions SME, so have not curated them, merely listed them here.

Note, there is also now a skill available that has been developed by
the magpie project which can be used to give more detailed feedback on
C using your preferred GenAII:
https://github.com/apache/magpie/blob/main/docs/repo-health/README.md#workflow-optimization-experimental

Make every effort to optimise your usage ASAP as the near constant
100% utilisation of our available GitHub hosted runner jobs is making
it practically impossible for all projects to get their CI jobs to
start and complete in a reasonable length of time, and it is incumbent
on all projects to do their part to help other projects get their fair
share of this limited resource.

Thanks.
Kind regards,
-Bob Thomson,
on behalf of ASF Infrastructure

Apache Spark

Fewer concurrent jobs

Stagger the scheduled variants. The */2-day crons, including
branch-scheduler dispatches, start about 53 full runs on every odd
day. Four start at 20:00 UTC and three in each of nine other hours. A
full run peaks at roughly 25-30 jobs. Move these same-hour pairs apart
or chain them with needs:

build_java21 and build_java25 (04:00)
build_maven_java21 and build_maven_java25 (14:00)
build_python_3.11 and build_python_connect (19:00)
build_python_3.13 and build_python_connect40 (20:00)
build_python_3.14 and build_python_3.12_pandas_3 (21:00)

Slow the release-branch schedulers. Branches 4.1, 4.2, 4.3 and 4.x
each run 8 variants every 2 days. Move them to */4, as 3.5 and 4.0
already are.
Make max-parallel effective. It’s 20 on the build, pyspark, and Maven
matrices, but those have only 10 to 12 legs, so the cap never limits
anything. When github.repository == 'apache/spark', set it to about 6.
Trim the variant job lists. build_java21 enables almost the whole
suite, including buf, ui, oidc-e2e, docker-integration-tests, and
k8s-integration-tests. build_non_ansi runs docs,
docker-integration-tests, and yarn. Drop the jobs that don’t depend on
the variable under test, and confirm each one first.
Rotate the Python and Maven variants. There are about 10 Python
workflows and 5 Maven ones, each a full matrix for a single
interpreter or JDK version. Run one version per scheduled run on a
rotating day. This is a detection-latency trade-off.

Shorter jobs

Add timeout-minutes where it’s missing:

Every job in maven_test.yml and python_hosted_runner_test.yml,
including the macOS and ARM hosted variants.
infra-image, where the file’s own comment says a cold cache costs
about 50 minutes.
buf.

Cut the jobs that add no signal. The trimming in actions 4 and 5 above
also shortens each variant run.

---------------------------------------------------------------------
To unsubscribe e-mail: [email protected]

Reply via email to