The GitHub Actions job "Coverage" on 
grails-core.git/fix/gorm-bean-validation-constraints has failed.
Run started by GitHub user jdaugherty (triggered by jdaugherty).

Head commit for run:
8400e11cbd96c094ce2215cc19ff979494a0ea46 / James Daugherty 
<[email protected]>
Release the Introspector's BeanInfo cache after each TCK spec

The Hibernate 7 core suite runs out of its default test fork heap on 9.0.x, and 
sits a few megabytes
under it on 8.x: a heap dump at the OOM shows java.beans.ThreadGroupContext, 
the JDK Introspector's
BeanInfo cache, retaining 203 MB, 41% of the heap, for 6,700 classes, with 
370,000 method
descriptors. Groovy reads the BeanInfo of a class when it builds its MetaClass, 
and the cache is keyed
by the class and releases an entry only when the class is unloaded, which never 
happens in a test JVM.
The domain classes of the TCK and of each spec cost about 330 method 
descriptors each, and every
closure of every spec is a class with an entry of its own. The suite grew past 
the heap when the
merge-up of 2026-10-30 added specs, and a pull request adding domain classes to 
the TCK tips it over.

GrailsDataTckManager.cleanupSpec() now flushes the Introspector's caches, as 
cleanRegistry() already
removes the MetaClasses of the domain classes. The suite's live set stops 
growing with the number of
specs that have run; a class a later spec builds a MetaClass for is 
introspected again. With the flush
the suite passes at the default heap in 7 minutes where it took 11 with a full 
GC every few tests, or
failed.

(cherry picked from commit 46d0b251a9d5549549e0b7a7391a092842358dad)

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

With regards,
GitHub Actions via GitBox

Reply via email to