You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by jd...@apache.org on 2026/08/25 14:53:17 UTC
(grails-core) 02/04: Cache the mongod apart from the dependency jars
This is an automated email from the ASF dual-hosted git repository.
jdaugherty pushed a commit to branch revert/16192-async-changes
in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 49cbe1d312ec5c47c32593b99df64196ff70dfc6
Author: James Daugherty <jd...@jdresources.net>
AuthorDate: Tue Aug 25 10:18:18 2026 -0400
Cache the mongod apart from the dependency jars
#16192 added ~/.embedmongo to all seventeen dependency-jar cache steps across the
two workflows. Only two jobs ever run a mongod, and neither of them can write
that cache:
- gradle.yml `build` is the only writer of the gradle-deps key, and it runs
-PonlyCoreTests, which is in the onlyIf of mongodb-test-config.gradle: no
MongoDB test task runs there, so it saved a directory that was never created.
- mongodbFunctional and the joint workflow do download a mongod, but they reach
the same key, and it exists by then, so their post-job save is skipped and
the binary is discarded every run.
Meanwhile the other thirteen jobs restored up to 250MB of mongod they have no
use for, and the key -- hashFiles on dependencies.gradle -- threw the download
away on any dependency bump, which has nothing to do with what MongoDB ships.
~/.embedmongo now has its own step in the two jobs that run a server, keyed by
runner and MongoDB version and nothing else. It holds an immutable download from
fastdl.mongodb.org, the archive and the binary extracted out of it, and no
database: flapdoodle keeps data under a temp path it deletes on shutdown unless
embedded.mongodb.database-dir is set, and the only specifications that set it
point it at a @TempDir. So it belongs to no branch and survives a version bump.
The version in the key also settles the matrix: mongodb-version is ['7.0','8.0'],
and under one key the entry that missed first won and the other restored a
binary it could not use. There are no restore-keys, for the same reason.
---
.github/workflows/gradle.yml | 26 +++++++++++---------------
.github/workflows/groovy-joint-workflow.yml | 11 +++++++++--
2 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml
index 3d982359b0..6720f2590a 100644
--- a/.github/workflows/gradle.yml
+++ b/.github/workflows/gradle.yml
@@ -44,7 +44,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
@@ -94,7 +93,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
@@ -183,7 +181,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
@@ -214,7 +211,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
buildRerunTasks:
if: ${{ !contains(github.event.head_commit.message, '[skip tests]') }}
@@ -267,7 +263,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
@@ -296,7 +291,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
buildForge:
name: "Build Grails Forge (Java ${{ matrix.java }}, indy=${{ matrix.indy }})"
@@ -327,7 +321,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
@@ -448,7 +441,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
@@ -484,7 +476,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
- name: "📤 Upload Geb Reports"
if: failure()
@@ -685,10 +676,20 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
+ - name: "🗄️ Cache the mongod the embedded server runs"
+ uses: actions/cache@v4
+ with:
+ # Kept apart from the dependency jars: this holds an immutable download from
+ # fastdl.mongodb.org - the archive and the binary extracted out of it - and no database,
+ # so it belongs to no branch and does not change when a dependency version does.
+ # Keyed by the version this entry asks for, because the matrix runs more than one and a
+ # single key would keep whichever job missed first and leave the other restoring 250MB
+ # of a binary it cannot use. No restore-keys, for that same reason.
+ path: ~/.embedmongo
+ key: embedmongo-${{ runner.os }}-${{ matrix.mongodb-version }}
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
with:
@@ -738,7 +739,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
@@ -890,7 +890,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
@@ -958,7 +957,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
@@ -1077,7 +1075,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
@@ -1195,7 +1192,6 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
diff --git a/.github/workflows/groovy-joint-workflow.yml b/.github/workflows/groovy-joint-workflow.yml
index d9e97b9459..5aba28cd7a 100644
--- a/.github/workflows/groovy-joint-workflow.yml
+++ b/.github/workflows/groovy-joint-workflow.yml
@@ -154,10 +154,18 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-
+ - name: "🗄️ Cache the mongod the embedded server runs"
+ uses: actions/cache@v4
+ with:
+ # Separate from the dependency jars, for the reasons given on the same step in
+ # gradle.yml. This job names no version, so it gets the one
+ # AbstractMongoGrailsExtension.DEFAULT_MONGO_VERSION names; a change there costs one
+ # download, not a wrong binary, since this key has no other reader.
+ path: ~/.embedmongo
+ key: embedmongo-${{ runner.os }}-7.0
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
with:
@@ -198,5 +206,4 @@ jobs:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
- ~/.embedmongo
key: gradle-deps-${{ runner.os }}-${{ github.base_ref || github.ref_name }}-${{ hashFiles('**/dependencies.gradle', '**/gradle-wrapper.properties') }}