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/10/01 08:52:43 UTC
(grails-core) 01/01: Merge branch '8.1.x' into 9.0.x
This is an automated email from the ASF dual-hosted git repository.
jdaugherty pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 4f9c78138a3b3762441bccc713fa6701161b6446
Merge: 3ee6bdc569 1b80f632be
Author: James Daugherty <jd...@jdresources.net>
AuthorDate: Thu Oct 1 04:08:38 2026 -0400
Merge branch '8.1.x' into 9.0.x
.github/workflows/build-health.yml | 142 ++++
.github/workflows/coverage.yml | 2 +-
.github/workflows/end-to-end.yml | 2 +-
.github/workflows/forge-deploy-aws.yml | 2 +-
.github/workflows/gradle.yml | 106 ++-
.github/workflows/groovy-snapshot-canary.yml | 4 +-
.github/workflows/rat.yml | 2 +-
.github/workflows/release-notes.yml | 145 +++-
.github/workflows/release.yml | 10 +-
.github/workflows/sitemesh2.yml | 4 +-
AGENTS.md | 14 +-
build-logic/README.md | 2 +
build-logic/gradle.properties | 2 +
build-logic/plugins/build.gradle | 5 -
.../buildsrc/GrailsRepoSettingsPlugin.groovy | 9 +
.../buildsrc/GrailsRepoSettingsPluginSpec.groovy | 119 +++
build-logic/settings.gradle | 6 +
build-logic/vulnerability-scan/build.gradle | 48 ++
.../buildsrc/scan}/OssIndexAuditThrottle.groovy | 2 +-
.../buildsrc/scan}/VulnerabilityScanPlugin.groovy | 2 +-
dependencies.gradle | 4 +-
gradle.properties | 9 +
gradle/dependency-analysis.settings.gradle | 99 +++
gradle/rat-root-config.gradle | 1 +
grails-console/build.gradle | 7 +-
grails-data-hibernate5/boot-plugin/build.gradle | 2 -
.../HibernateGormAutoConfiguration.groovy | 3 +-
.../gorm/mongo/DisjunctionQuerySpec.groovy | 2 -
grails-data-mongodb/gson-templates/build.gradle | 3 +
.../gorm/tests/HasManyInheritanceSpec.groovy | 3 +-
.../tests/multitenancy/MultiTenancySpec.groovy | 3 +-
.../datastore/gorm/DefaultGormApiFactory.groovy | 24 +-
.../org/grails/datastore/gorm/GormEnhancer.groovy | 24 +-
.../gorm/finders/AbstractFindByFinder.java | 69 --
.../datastore/gorm/finders/AbstractFinder.java | 86 --
.../datastore/gorm/finders/CountByFinder.java | 91 ---
.../grails/datastore/gorm/finders/CountFinder.java | 157 ++++
.../datastore/gorm/finders/DynamicFinder.java | 359 ++++-----
.../gorm/finders/DynamicFinderInvocation.java | 12 +-
.../gorm/finders/FindAllByBooleanFinder.java | 56 --
.../datastore/gorm/finders/FindAllByFinder.java | 71 --
.../gorm/finders/FindByBooleanFinder.java | 51 --
.../datastore/gorm/finders/FindByFinder.java | 45 --
.../gorm/finders/FindOrCreateByFinder.java | 117 ---
.../datastore/gorm/finders/FindOrSaveByFinder.java | 53 --
.../datastore/gorm/finders/FinderGrammar.java | 65 ++
.../datastore/gorm/finders/FinderSupport.java | 78 ++
.../datastore/gorm/finders/ListOrderByFinder.java | 133 ++--
.../datastore/gorm/finders/ListResultFinder.java | 134 ++++
.../datastore/gorm/finders/MethodExpression.java | 64 +-
.../datastore/gorm/finders/SingleResultFinder.java | 245 ++++++
.../datastore/gorm/proxy/GroovyProxyFactory.groovy | 10 +-
.../gorm/proxy/ProxyInstanceMetaClass.java | 170 ++--
.../query/criteria/AbstractDetachedCriteria.groovy | 3 +-
.../datastore/gorm/finders/CountFinderSpec.groovy | 261 +++++++
...c.groovy => DatastoreResolverFinderSpec.groovy} | 66 +-
.../gorm/finders/DynamicFinderCoverageSpec.groovy | 10 +-
.../finders/DynamicFinderInvocationSpec.groovy | 67 ++
.../gorm/finders/DynamicFinderSpec.groovy | 869 ++++++++++++++++++++-
.../finders/FindOrSaveByDynamicFinderSpec.groovy | 63 ++
.../gorm/finders/FindOrSaveByFinderSpec.groovy | 88 ---
.../gorm/finders/FinderSupportSpec.groovy | 123 +++
.../datastore/gorm/finders/FinderTestEntity.groovy | 49 ++
.../gorm/finders/ListOrderByFinderSpec.groovy | 210 +++++
.../gorm/finders/ListResultFinderSpec.groovy | 222 ++++++
.../gorm/finders/MethodExpressionSpec.groovy | 574 ++++++++++++++
.../gorm/finders/SingleResultFinderSpec.groovy | 412 ++++++++++
.../gorm/proxy/GroovyProxyFactorySpec.groovy | 385 +++++++++
.../gorm/proxy/ProxyInstanceMetaClassSpec.groovy | 475 +++++++++++
.../org/grails/gorm/rx/api/RxGormStaticApi.groovy | 24 +-
.../grails/gorm/rx/finders/CountByFinder.groovy | 53 --
.../gorm/rx/finders/FindAllByBooleanFinder.groovy | 42 -
.../grails/gorm/rx/finders/FindAllByFinder.groovy | 59 --
.../gorm/rx/finders/FindByBooleanFinder.groovy | 42 -
.../org/grails/gorm/rx/finders/FindByFinder.groovy | 51 --
.../gorm/rx/finders/FindOrCreateByFinder.groovy | 92 ---
.../gorm/rx/finders/FindOrSaveByFinder.groovy | 40 -
.../grails/gorm/rx/finders/RxCountFinder.groovy | 98 +++
.../gorm/rx/finders/RxListResultFinder.groovy | 115 +++
.../gorm/rx/finders/RxSingleResultFinder.groovy | 195 +++++
.../gorm/rx/finders/CountByFinderSpec.groovy | 140 ----
.../rx/finders/FindAllByBooleanFinderSpec.groovy | 96 ---
.../gorm/rx/finders/FindAllByFinderSpec.groovy | 146 ----
.../gorm/rx/finders/FindByBooleanFinderSpec.groovy | 86 --
.../grails/gorm/rx/finders/FindByFinderSpec.groovy | 133 ----
.../rx/finders/FindOrCreateByFinderSpec.groovy | 185 -----
.../gorm/rx/finders/FindOrSaveByFinderSpec.groovy | 114 ---
.../gorm/rx/finders/RxCountFinderSpec.groovy | 172 ++++
.../gorm/rx/finders/RxListResultFinderSpec.groovy | 246 ++++++
.../rx/finders/RxSingleResultFinderSpec.groovy | 377 +++++++++
.../data/testing/tck/tests/GroovyProxySpec.groovy | 23 +
grails-doc/src/en/guide/deployment.adoc | 27 +-
.../en/guide/deployment/deploymentContainer.adoc | 52 +-
.../guide/deployment/deploymentLayeredBuilds.adoc | 245 ++++++
.../en/guide/deployment/deploymentStandalone.adoc | 116 ++-
.../src/en/guide/deployment/deploymentTasks.adoc | 197 ++++-
grails-doc/src/en/guide/index.adoc | 25 +-
grails-doc/src/en/guide/toc.yml | 5 +-
.../src/en/guide/upgrading/upgrading80x.adoc | 37 +
grails-forge/gradle.properties | 2 +
grails-forge/settings.gradle | 3 +
grails-gradle/gradle.properties | 2 +
grails-gradle/plugins/build.gradle | 3 +
.../gradle/plugin/core/GrailsGradlePlugin.groovy | 69 +-
.../plugin/core/GrailsPluginGradlePlugin.groovy | 4 +
.../plugin/core/AssetClasspathPackagingSpec.groovy | 47 --
.../core/GrailsAssetPipelineLayoutSpec.groovy | 68 ++
.../GrailsPluginGradlePluginAstClassesSpec.groovy | 46 ++
.../asset-classpath-packaging/build.gradle | 42 -
.../asset-classpath-packaging/settings.gradle | 1 -
.../plugin-ast-classes-dirs/build.gradle | 12 +
.../gradle.properties | 1 -
.../grails-app/conf/application.yml | 0
.../plugin-ast-classes-dirs/settings.gradle | 1 +
grails-gradle/settings.gradle | 3 +
settings.gradle | 3 +
116 files changed, 7538 insertions(+), 2757 deletions(-)
diff --cc .github/workflows/gradle.yml
index e1ce086b8d,e2982bbbe4..cc068dc9f7
--- a/.github/workflows/gradle.yml
+++ b/.github/workflows/gradle.yml
@@@ -494,61 -490,23 +494,61 @@@ jobs
cache-disabled: true # dependency jars are cached by the explicit branch-keyed step above
develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- name: "🔍 Setup TestLens"
- uses: testlens-app/setup-testlens@3f82d2dc6cd5c03f02ce5f7885a21195d85f8d14 # v1.9.3
+ uses: testlens-app/setup-testlens@d29a2be31512b3aeda3adcef09fbe0d55af90c51 # v1.9.4
- name: "🏃 Run Functional Tests"
- run: >
- ./gradlew ${{ matrix.gradle_task }}
- --continue
- --rerun-tasks
- --stacktrace
- -PgrailsIndy=${{ matrix.indy }}
- -PonlyFunctionalTests
- -PskipCodeStyle
- -PskipHibernate5Tests
- -PskipHibernate7Tests
- -PskipMongodbTests
- -PskipNeo4jTests
- -PskipSpringSecurityTests
- -PskipRedisTests
- ${{ matrix.shard_arguments }}
+ # The known hanging cell finishes tests, prints the wrapper:test /
+ # aggregate-report tail, then hangs before buildFinished. Timeout plus
+ # that end-of-walk log and green XML is treated as success.
+ run: |
+ hanging=0
+ if [ "${{ matrix.java }}" = "21" ] && [ "${{ matrix.indy }}" = "true" ] && [ "${{ matrix.gradle_task }}" = "testShard" ]; then
+ hanging=1
+ limit=45m
+ else
+ limit=70m
+ fi
+ rm -f build/ci-build-finished.txt build/ci-build-finished.txt.tmp
+ set +e
+ timeout --kill-after=30s "$limit" ./gradlew ${{ matrix.gradle_task }} \
+ --init-script .github/ci-exit-after-build.init.gradle \
+ --no-daemon \
+ --continue \
+ --rerun-tasks \
+ --stacktrace \
+ -PgrailsIndy=${{ matrix.indy }} \
+ -PonlyFunctionalTests \
+ -PskipCodeStyle \
+ -PskipHibernate5Tests \
+ -PskipHibernate7Tests \
+ -PskipMongodbTests \
+ -PskipNeo4jTests \
+ -PskipSpringSecurityTests \
+ -PskipRedisTests \
+ ${{ matrix.shard_arguments }} \
+ 2>&1 | tee gradle-functional.log
+ code=${PIPESTATUS[0]}
+ set -e
+ if [ "$code" -eq 0 ]; then
+ exit 0
+ fi
+ marker="build/ci-build-finished.txt"
+ if [ "$hanging" -eq 1 ] && { [ "$code" -eq 124 ] || [ "$code" -eq 137 ]; }; then
+ if [ -f "$marker" ] && [ "$(cat "$marker")" = "SUCCESS" ]; then
+ echo "Known hanging cell: SUCCESS sentinel after teardown hang."
+ exit 0
+ fi
+ if grep -qE '> Task .+ FAILED' gradle-functional.log; then
+ echo "A Gradle task FAILED; not recovering from teardown hang."
+ exit 1
+ fi
+ if grep -q '> Task :grails-wrapper:test' gradle-functional.log \
+ && grep -q 'Markdown aggregate test report:' gradle-functional.log \
+ && python3 .github/ci-check-functional-reports.py; then
+ echo "Known hanging cell: suite walked to grails-wrapper:test with green XML; teardown hang treated as success."
+ exit 0
+ fi
+ fi
+ exit "$code"
- name: "🗄️ Save dependency jar cache"
if: ${{ success() && matrix.cache_writer && steps.dependency-cache.outputs.cache-hit != 'true' }}
uses: actions/cache/save@v6.1.0