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 <[email protected]> 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 <[email protected]> Report URL: https://github.com/apache/grails-core/actions/runs/31652484745 With regards, GitHub Actions via GitBox
