jamesfredley opened a new pull request, #15797: URL: https://github.com/apache/grails-core/pull/15797
## Summary - remove empty converter and datastore ThreadLocal holders when scoped state is cleared - prevent SoftThreadLocalMap child threads from sharing parent map state - add virtual-thread regression coverage for converter scoped configs, datastore deferred close lifecycle, and encoder chaining ## Verification - `./gradlew :grails-converters:test --tests org.grails.web.converters.configuration.ConvertersConfigurationHolderSpec :grails-datastore-core:test --tests org.grails.datastore.mapping.core.DatastoreUtilsSpec :grails-encoder:test --tests org.grails.encoder.ChainedEncodersSpec` - `./gradlew clean aggregateViolations :grails-test-report:check --continue` - Combined report: 13623 tests, 0 failures, 0 errors, 267 skipped - Unit report: 10729 tests, 0 failures, 0 errors, 258 skipped - Integration/functional report: 2894 tests, 0 failures, 0 errors, 9 skipped - Checkstyle, CodeNarc, PMD, SpotBugs: no violations found - Review-gate: Oracle GREEN; Codex GREEN for source changes, with only untracked `.omo/` and `tmp-pr-response.md` artifact noise outside the shipping diff ## Performance/readiness notes - Default converter lookup no longer allocates a per-thread map. - Clearing the last scoped converter config removes the ThreadLocal entry. - Deferred datastore close cleanup removes the ThreadLocal entry instead of leaving a null value. - Existing encoder ThreadLocal cache remains intact to avoid an unmeasured regression. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
