You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@grails.apache.org by GitBox <gi...@apache.org> on 2026/08/13 00:22:15 UTC

[GH] (grails-core/chore/cleanup-AbstractCriteriaBuilder): Workflow run "End to End" is working again!

The GitHub Actions job "End to End" on grails-core.git/chore/cleanup-AbstractCriteriaBuilder has succeeded.
Run started by GitHub user borinquenkid (triggered by borinquenkid).

Head commit for run:
a8f61b81a297ca8ebfa3c0b1c55aac0e80948e31 / Walter Duque de Estrada <wb...@mac.com>
Fix infinite recursion in CriteriaBuilder.scroll() on malformed calls

scroll(Closure c) unconditionally re-entered invokeMethod(SCROLL_CALL, new Object[]{c})
to reuse the shared criteria-construction logic. When scroll() is called with the wrong
arg count/type (e.g. bare scroll(), or a call whose argument gets null-coerced by Groovy's
meta-method matching), isCriteriaConstructionMethod() correctly rejects it, but invokeMethod
then falls through to its getMetaClass() meta-method lookup, which is willing to match
scroll(Closure) with a null argument and invoke it - re-entering scroll() with the same null
argument forever, and StackOverflowing.

Extracted the shared criteria-construction logic (evaluate the closure, run the query,
reset state) into a new executeCriteriaConstruction() method, and changed scroll() to call
it directly instead of bouncing back through the dynamic dispatch in invokeMethod. This
closes the recursion path entirely: a malformed scroll() call now just runs the query with
no criteria applied, matching how an empty/null closure already behaves everywhere else in
this class, instead of crashing.

Found and root-caused while extending the SCROLL_CALL branch's test coverage for PR #16140;
CriteriaBuilder.java is already one of that PR's changed files even though this particular
method wasn't touched by its diff.

Co-Authored-By: Claude Sonnet 5 <no...@anthropic.com>

Report URL: https://github.com/apache/grails-core/actions/runs/31652484745

With regards,
GitHub Actions via GitBox