From 28864e7ccb4e656ec549f13f4b0beec96a96bcef Mon Sep 17 00:00:00 2001 From: Ruifeng Zheng Date: Fri, 5 Jun 2026 12:18:20 +0000 Subject: [PATCH 1/3] [CI] Prefix all CI cache keys with \${{ runner.os }} Add \${{ runner.os }}- as a prefix to every cache key and restore-key value in CI workflows that lacked it, so caches are isolated per OS and never cross-pollute between Linux and Windows runners. Generated-by: Claude Sonnet 4.6 --- .github/workflows/build_and_test.yml | 46 +++++++++---------- .github/workflows/build_python_connect.yml | 8 ++-- .github/workflows/build_python_connect40.yml | 8 ++-- .github/workflows/build_sparkr_window.yml | 4 +- .github/workflows/maven_test.yml | 16 +++---- .github/workflows/publish_snapshot.yml | 4 +- .../workflows/python_hosted_runner_test.yml | 4 +- 7 files changed, 45 insertions(+), 45 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c5b1609105a3b..34cefe644faea 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -378,9 +378,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -612,9 +612,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Cache Coursier local repository uses: actions/cache@v5 with: @@ -741,9 +741,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -927,9 +927,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -1078,9 +1078,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -1092,9 +1092,9 @@ jobs: uses: actions/cache@v5 with: path: ~/.m2/repository - key: docs-maven-${{ hashFiles('**/pom.xml') }} + key: ${{ runner.os }}-docs-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | - docs-maven- + ${{ runner.os }}-docs-maven- - name: Free up disk space run: ./dev/free_disk_space_container - name: Install Java ${{ inputs.java }} @@ -1277,9 +1277,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -1291,9 +1291,9 @@ jobs: uses: actions/cache@v5 with: path: ~/.m2/repository - key: docs-maven-${{ hashFiles('**/pom.xml') }} + key: ${{ runner.os }}-docs-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | - docs-maven- + ${{ runner.os }}-docs-maven- - name: Free up disk space run: ./dev/free_disk_space_container - name: Install Java ${{ inputs.java }} @@ -1472,9 +1472,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -1506,7 +1506,7 @@ jobs: uses: actions/cache@v5 with: path: ./tpcds-sf-1 - key: tpcds-${{ hashFiles('.github/workflows/build_and_test.yml', 'sql/core/src/test/scala/org/apache/spark/sql/TPCDSSchema.scala') }} + key: ${{ runner.os }}-tpcds-${{ hashFiles('.github/workflows/build_and_test.yml', 'sql/core/src/test/scala/org/apache/spark/sql/TPCDSSchema.scala') }} - name: Checkout tpcds-kit repository if: steps.cache-tpcds-sf-1.outputs.cache-hit != 'true' uses: actions/checkout@v6 @@ -1604,9 +1604,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -1690,9 +1690,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: diff --git a/.github/workflows/build_python_connect.yml b/.github/workflows/build_python_connect.yml index 8b5be73c0fa34..447b6cd52d0a0 100644 --- a/.github/workflows/build_python_connect.yml +++ b/.github/workflows/build_python_connect.yml @@ -41,16 +41,16 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-spark-connect-python-only-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-spark-connect-python-only-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build-spark-connect-python-only- + ${{ runner.os }}-build-spark-connect-python-only- - name: Cache Coursier local repository uses: actions/cache@v5 with: path: ~/.cache/coursier - key: coursier-build-spark-connect-python-only-${{ hashFiles('**/pom.xml') }} + key: ${{ runner.os }}-coursier-build-spark-connect-python-only-${{ hashFiles('**/pom.xml') }} restore-keys: | - coursier-build-spark-connect-python-only- + ${{ runner.os }}-coursier-build-spark-connect-python-only- - name: Install Java 17 uses: actions/setup-java@v5 with: diff --git a/.github/workflows/build_python_connect40.yml b/.github/workflows/build_python_connect40.yml index b6a7d373de94b..69e3108b59bc4 100644 --- a/.github/workflows/build_python_connect40.yml +++ b/.github/workflows/build_python_connect40.yml @@ -43,16 +43,16 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-spark-connect-python-only-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-spark-connect-python-only-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build-spark-connect-python-only- + ${{ runner.os }}-build-spark-connect-python-only- - name: Cache Coursier local repository uses: actions/cache@v5 with: path: ~/.cache/coursier - key: coursier-build-spark-connect-python-only-${{ hashFiles('**/pom.xml') }} + key: ${{ runner.os }}-coursier-build-spark-connect-python-only-${{ hashFiles('**/pom.xml') }} restore-keys: | - coursier-build-spark-connect-python-only- + ${{ runner.os }}-coursier-build-spark-connect-python-only- - name: Install Java 17 uses: actions/setup-java@v5 with: diff --git a/.github/workflows/build_sparkr_window.yml b/.github/workflows/build_sparkr_window.yml index 0871646b665ff..3c65f8ba6b6aa 100644 --- a/.github/workflows/build_sparkr_window.yml +++ b/.github/workflows/build_sparkr_window.yml @@ -43,9 +43,9 @@ jobs: uses: actions/cache@v5 with: path: ~/.m2/repository - key: build-sparkr-windows-maven-${{ hashFiles('**/pom.xml') }} + key: ${{ runner.os }}-build-sparkr-windows-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | - build-sparkr-windows-maven- + ${{ runner.os }}-build-sparkr-windows-maven- - name: Install Java 17 uses: actions/setup-java@v5 with: diff --git a/.github/workflows/maven_test.yml b/.github/workflows/maven_test.yml index 49029ae2263cf..46c6bdad6fa79 100644 --- a/.github/workflows/maven_test.yml +++ b/.github/workflows/maven_test.yml @@ -89,18 +89,18 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Cache Maven local repository # TODO(SPARK-54466): https://github.com/actions/runner-images/issues/13341 if: ${{ runner.os != 'macOS' }} uses: actions/cache@v5 with: path: ~/.m2/repository - key: java${{ inputs.java }}-maven-${{ hashFiles('**/pom.xml') }} + key: ${{ runner.os }}-java${{ inputs.java }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | - java${{ inputs.java }}-maven- + ${{ runner.os }}-java${{ inputs.java }}-maven- - name: Install Java ${{ inputs.java }} uses: actions/setup-java@v5 with: @@ -240,18 +240,18 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Cache Maven local repository # TODO(SPARK-54466): https://github.com/actions/runner-images/issues/13341 if: ${{ runner.os != 'macOS' }} uses: actions/cache@v5 with: path: ~/.m2/repository - key: java${{ matrix.java }}-maven-${{ hashFiles('**/pom.xml') }} + key: ${{ runner.os }}-java${{ matrix.java }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | - java${{ matrix.java }}-maven- + ${{ runner.os }}-java${{ matrix.java }}-maven- - name: Install Java ${{ matrix.java }} uses: actions/setup-java@v5 with: diff --git a/.github/workflows/publish_snapshot.yml b/.github/workflows/publish_snapshot.yml index e3e92faa45b6a..4369a28035fa8 100644 --- a/.github/workflows/publish_snapshot.yml +++ b/.github/workflows/publish_snapshot.yml @@ -49,9 +49,9 @@ jobs: uses: actions/cache@v5 with: path: ~/.m2/repository - key: snapshot-maven-${{ hashFiles('**/pom.xml') }} + key: ${{ runner.os }}-snapshot-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | - snapshot-maven- + ${{ runner.os }}-snapshot-maven- - name: Install Java 8 for branch-3.x if: matrix.branch == 'branch-3.5' uses: actions/setup-java@v5 diff --git a/.github/workflows/python_hosted_runner_test.yml b/.github/workflows/python_hosted_runner_test.yml index e29b89708bea1..28828584878dc 100644 --- a/.github/workflows/python_hosted_runner_test.yml +++ b/.github/workflows/python_hosted_runner_test.yml @@ -128,9 +128,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - build- + ${{ runner.os }}-build- - name: Cache Coursier local repository # TODO(SPARK-54466): https://github.com/actions/runner-images/issues/13341 if: ${{ runner.os != 'macOS' }} From 21be5868b83a241dcd1c78b578b8f94ff3f996e4 Mon Sep 17 00:00:00 2001 From: Ruifeng Zheng Date: Sat, 6 Jun 2026 02:00:55 +0000 Subject: [PATCH 2/3] [CI] Reorder cache keys to oldprefix-os-env-hash Move ${{ runner.os }} from the front of each cache key to just after the original descriptive prefix, giving keys the form `oldprefix-${{ runner.os }}--` (e.g. build-${{ runner.os }}-..., maven-${{ runner.os }}-java-...). This keeps the human-readable prefix leading while still isolating caches per OS. Generated-by: Claude Opus 4.8 --- .github/workflows/build_and_test.yml | 46 +++++++++---------- .github/workflows/build_python_connect.yml | 8 ++-- .github/workflows/build_python_connect40.yml | 8 ++-- .github/workflows/build_sparkr_window.yml | 4 +- .github/workflows/maven_test.yml | 16 +++---- .github/workflows/publish_snapshot.yml | 4 +- .../workflows/python_hosted_runner_test.yml | 4 +- 7 files changed, 45 insertions(+), 45 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 34cefe644faea..3f7f7fca629d5 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -378,9 +378,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -612,9 +612,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Cache Coursier local repository uses: actions/cache@v5 with: @@ -741,9 +741,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -927,9 +927,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -1078,9 +1078,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -1092,9 +1092,9 @@ jobs: uses: actions/cache@v5 with: path: ~/.m2/repository - key: ${{ runner.os }}-docs-maven-${{ hashFiles('**/pom.xml') }} + key: docs-maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} restore-keys: | - ${{ runner.os }}-docs-maven- + docs-maven-${{ runner.os }}- - name: Free up disk space run: ./dev/free_disk_space_container - name: Install Java ${{ inputs.java }} @@ -1277,9 +1277,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -1291,9 +1291,9 @@ jobs: uses: actions/cache@v5 with: path: ~/.m2/repository - key: ${{ runner.os }}-docs-maven-${{ hashFiles('**/pom.xml') }} + key: docs-maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} restore-keys: | - ${{ runner.os }}-docs-maven- + docs-maven-${{ runner.os }}- - name: Free up disk space run: ./dev/free_disk_space_container - name: Install Java ${{ inputs.java }} @@ -1472,9 +1472,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -1506,7 +1506,7 @@ jobs: uses: actions/cache@v5 with: path: ./tpcds-sf-1 - key: ${{ runner.os }}-tpcds-${{ hashFiles('.github/workflows/build_and_test.yml', 'sql/core/src/test/scala/org/apache/spark/sql/TPCDSSchema.scala') }} + key: tpcds-${{ runner.os }}-${{ hashFiles('.github/workflows/build_and_test.yml', 'sql/core/src/test/scala/org/apache/spark/sql/TPCDSSchema.scala') }} - name: Checkout tpcds-kit repository if: steps.cache-tpcds-sf-1.outputs.cache-hit != 'true' uses: actions/checkout@v6 @@ -1604,9 +1604,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: @@ -1690,9 +1690,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Restore Coursier local repository uses: actions/cache/restore@v5 with: diff --git a/.github/workflows/build_python_connect.yml b/.github/workflows/build_python_connect.yml index 447b6cd52d0a0..5e1d269fc5f52 100644 --- a/.github/workflows/build_python_connect.yml +++ b/.github/workflows/build_python_connect.yml @@ -41,16 +41,16 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-spark-connect-python-only-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-spark-connect-python-only-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build-spark-connect-python-only- + build-spark-connect-python-only-${{ runner.os }}- - name: Cache Coursier local repository uses: actions/cache@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-coursier-build-spark-connect-python-only-${{ hashFiles('**/pom.xml') }} + key: coursier-build-spark-connect-python-only-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} restore-keys: | - ${{ runner.os }}-coursier-build-spark-connect-python-only- + coursier-build-spark-connect-python-only-${{ runner.os }}- - name: Install Java 17 uses: actions/setup-java@v5 with: diff --git a/.github/workflows/build_python_connect40.yml b/.github/workflows/build_python_connect40.yml index 69e3108b59bc4..a2a289b02633f 100644 --- a/.github/workflows/build_python_connect40.yml +++ b/.github/workflows/build_python_connect40.yml @@ -43,16 +43,16 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-spark-connect-python-only-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-spark-connect-python-only-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build-spark-connect-python-only- + build-spark-connect-python-only-${{ runner.os }}- - name: Cache Coursier local repository uses: actions/cache@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-coursier-build-spark-connect-python-only-${{ hashFiles('**/pom.xml') }} + key: coursier-build-spark-connect-python-only-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} restore-keys: | - ${{ runner.os }}-coursier-build-spark-connect-python-only- + coursier-build-spark-connect-python-only-${{ runner.os }}- - name: Install Java 17 uses: actions/setup-java@v5 with: diff --git a/.github/workflows/build_sparkr_window.yml b/.github/workflows/build_sparkr_window.yml index 3c65f8ba6b6aa..874904da3eadf 100644 --- a/.github/workflows/build_sparkr_window.yml +++ b/.github/workflows/build_sparkr_window.yml @@ -43,9 +43,9 @@ jobs: uses: actions/cache@v5 with: path: ~/.m2/repository - key: ${{ runner.os }}-build-sparkr-windows-maven-${{ hashFiles('**/pom.xml') }} + key: build-sparkr-windows-maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} restore-keys: | - ${{ runner.os }}-build-sparkr-windows-maven- + build-sparkr-windows-maven-${{ runner.os }}- - name: Install Java 17 uses: actions/setup-java@v5 with: diff --git a/.github/workflows/maven_test.yml b/.github/workflows/maven_test.yml index 46c6bdad6fa79..cc88fab6721fe 100644 --- a/.github/workflows/maven_test.yml +++ b/.github/workflows/maven_test.yml @@ -89,18 +89,18 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Cache Maven local repository # TODO(SPARK-54466): https://github.com/actions/runner-images/issues/13341 if: ${{ runner.os != 'macOS' }} uses: actions/cache@v5 with: path: ~/.m2/repository - key: ${{ runner.os }}-java${{ inputs.java }}-maven-${{ hashFiles('**/pom.xml') }} + key: maven-${{ runner.os }}-java${{ inputs.java }}-${{ hashFiles('**/pom.xml') }} restore-keys: | - ${{ runner.os }}-java${{ inputs.java }}-maven- + maven-${{ runner.os }}-java${{ inputs.java }}- - name: Install Java ${{ inputs.java }} uses: actions/setup-java@v5 with: @@ -240,18 +240,18 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Cache Maven local repository # TODO(SPARK-54466): https://github.com/actions/runner-images/issues/13341 if: ${{ runner.os != 'macOS' }} uses: actions/cache@v5 with: path: ~/.m2/repository - key: ${{ runner.os }}-java${{ matrix.java }}-maven-${{ hashFiles('**/pom.xml') }} + key: maven-${{ runner.os }}-java${{ matrix.java }}-${{ hashFiles('**/pom.xml') }} restore-keys: | - ${{ runner.os }}-java${{ matrix.java }}-maven- + maven-${{ runner.os }}-java${{ matrix.java }}- - name: Install Java ${{ matrix.java }} uses: actions/setup-java@v5 with: diff --git a/.github/workflows/publish_snapshot.yml b/.github/workflows/publish_snapshot.yml index 4369a28035fa8..224f3c3207c07 100644 --- a/.github/workflows/publish_snapshot.yml +++ b/.github/workflows/publish_snapshot.yml @@ -49,9 +49,9 @@ jobs: uses: actions/cache@v5 with: path: ~/.m2/repository - key: ${{ runner.os }}-snapshot-maven-${{ hashFiles('**/pom.xml') }} + key: snapshot-maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} restore-keys: | - ${{ runner.os }}-snapshot-maven- + snapshot-maven-${{ runner.os }}- - name: Install Java 8 for branch-3.x if: matrix.branch == 'branch-3.5' uses: actions/setup-java@v5 diff --git a/.github/workflows/python_hosted_runner_test.yml b/.github/workflows/python_hosted_runner_test.yml index 28828584878dc..456a0f16a069c 100644 --- a/.github/workflows/python_hosted_runner_test.yml +++ b/.github/workflows/python_hosted_runner_test.yml @@ -128,9 +128,9 @@ jobs: build/apache-maven-* build/*.jar ~/.sbt - key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} + key: build-${{ runner.os }}-${{ hashFiles('**/pom.xml', 'project/build.properties', 'build/mvn', 'build/sbt', 'build/sbt-launch-lib.bash', 'build/spark-build-info') }} restore-keys: | - ${{ runner.os }}-build- + build-${{ runner.os }}- - name: Cache Coursier local repository # TODO(SPARK-54466): https://github.com/actions/runner-images/issues/13341 if: ${{ runner.os != 'macOS' }} From ee06d844f8324e482e8bbdca01067dc5b0b29809 Mon Sep 17 00:00:00 2001 From: Ruifeng Zheng Date: Sat, 6 Jun 2026 02:09:01 +0000 Subject: [PATCH 3/3] [CI] Reorder pre-existing Coursier cache keys to prefix-os-env-hash The Coursier caches already carried a leading ${{ runner.os }} and were left untouched earlier. Reorder them to match the new format so every key in the workflows is consistent: coursier-${{ runner.os }}--, e.g. coursier-${{ runner.os }}-${{ matrix.java }}-${{ matrix.hadoop }}-... Generated-by: Claude Opus 4.8 --- .github/workflows/build_and_test.yml | 38 +++++++++---------- .../workflows/python_hosted_runner_test.yml | 4 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 3f7f7fca629d5..42325a6401e0b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -385,10 +385,10 @@ jobs: uses: actions/cache/restore@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-${{ matrix.java }}-${{ matrix.hadoop }}-coursier-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} + key: coursier-${{ runner.os }}-${{ matrix.java }}-${{ matrix.hadoop }}-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} restore-keys: | - ${{ runner.os }}-${{ matrix.java }}-${{ matrix.hadoop }}-coursier- - ${{ runner.os }}-coursier- + coursier-${{ runner.os }}-${{ matrix.java }}-${{ matrix.hadoop }}- + coursier-${{ runner.os }}- - name: Free up disk space run: | if [ -f ./dev/free_disk_space ]; then @@ -619,9 +619,9 @@ jobs: uses: actions/cache@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-coursier-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} + key: coursier-${{ runner.os }}-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} restore-keys: | - ${{ runner.os }}-coursier- + coursier-${{ runner.os }}- - name: Install Java ${{ inputs.java }} uses: actions/setup-java@v5 with: @@ -748,9 +748,9 @@ jobs: uses: actions/cache/restore@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-coursier-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} + key: coursier-${{ runner.os }}-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} restore-keys: | - ${{ runner.os }}-coursier- + coursier-${{ runner.os }}- - name: Free up disk space shell: 'script -q -e -c "bash {0}"' run: ./dev/free_disk_space_container @@ -934,9 +934,9 @@ jobs: uses: actions/cache/restore@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-coursier-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} + key: coursier-${{ runner.os }}-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} restore-keys: | - ${{ runner.os }}-coursier- + coursier-${{ runner.os }}- - name: Free up disk space run: ./dev/free_disk_space_container - name: Install Java ${{ inputs.java }} @@ -1085,9 +1085,9 @@ jobs: uses: actions/cache/restore@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-coursier-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} + key: coursier-${{ runner.os }}-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} restore-keys: | - ${{ runner.os }}-coursier- + coursier-${{ runner.os }}- - name: Cache Maven local repository uses: actions/cache@v5 with: @@ -1284,9 +1284,9 @@ jobs: uses: actions/cache/restore@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-coursier-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} + key: coursier-${{ runner.os }}-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} restore-keys: | - ${{ runner.os }}-coursier- + coursier-${{ runner.os }}- - name: Cache Maven local repository uses: actions/cache@v5 with: @@ -1479,9 +1479,9 @@ jobs: uses: actions/cache/restore@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-coursier-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} + key: coursier-${{ runner.os }}-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} restore-keys: | - ${{ runner.os }}-coursier- + coursier-${{ runner.os }}- - name: Install Java ${{ inputs.java }} uses: actions/setup-java@v5 with: @@ -1611,9 +1611,9 @@ jobs: uses: actions/cache/restore@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-coursier-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} + key: coursier-${{ runner.os }}-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} restore-keys: | - ${{ runner.os }}-coursier- + coursier-${{ runner.os }}- - name: Install Java ${{ inputs.java }} uses: actions/setup-java@v5 with: @@ -1697,9 +1697,9 @@ jobs: uses: actions/cache/restore@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-coursier-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} + key: coursier-${{ runner.os }}-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} restore-keys: | - ${{ runner.os }}-coursier- + coursier-${{ runner.os }}- - name: Free up disk space run: | if [ -f ./dev/free_disk_space ]; then diff --git a/.github/workflows/python_hosted_runner_test.yml b/.github/workflows/python_hosted_runner_test.yml index 456a0f16a069c..46f8f5fddc218 100644 --- a/.github/workflows/python_hosted_runner_test.yml +++ b/.github/workflows/python_hosted_runner_test.yml @@ -137,9 +137,9 @@ jobs: uses: actions/cache@v5 with: path: ~/.cache/coursier - key: ${{ runner.os }}-coursier-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} + key: coursier-${{ runner.os }}-${{ hashFiles('**/pom.xml', '**/plugins.sbt') }} restore-keys: | - ${{ runner.os }}-coursier- + coursier-${{ runner.os }}- - name: Install Java ${{ matrix.java }} uses: actions/setup-java@v5 with: