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
