The GitHub Actions job "CI - Groovy Joint Validation Build" on 
grails-core.git/fix/domain-class-verdict-on-node has failed.
Run started by GitHub user jdaugherty (triggered by jdaugherty).

Head commit for run:
ed52358571b9836ed4a08ad7678f86b8f2cf21fa / James Daugherty 
<[email protected]>
Keep the domain-class verdict on the class node, not in a JVM-wide cache

AstUtils.isDomainClass(ClassNode) was @Memoized. Groovy's default memo
is an unbounded cache keyed by argument equality, and ClassNode equality
is the class name, so every node ever asked about was pinned for the
life of the JVM, and with it the node's module, the compile unit and the
class loader of its compilation. In a forked Groovy compiler that Gradle
reuses for a project's main and test compiles, that is the whole AST of
the previous compile: measured after the grails-datamapping-core test
compile, the worker still held 194,420 ClassNodes and 154 ModuleNodes,
222 MB after a full collection, when the next compile started. The
MongoDB core test compile of #16631 then ran out of its 2 GB on CI.

The verdict now lives as node metadata on the node's redirect, so it is
collected with the node, and two same-named nodes from different
compilations, such as test fixtures compiled from strings, each get
their own answer. #16653 had added isDomainClassUncached to sidestep
that collision for the id and version placement; the uncached check now
backs the cached one. The memo dates from GORM itself (ee14a969f9, 2015)
and came in with the GORM integration (a58aa145cf); it is the same on
every branch from 7.0.x up.

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

With regards,
GitHub Actions via GitBox

Reply via email to