jamesfredley opened a new pull request, #15828:
URL: https://github.com/apache/grails-core/pull/15828
## Summary
- Replace `GrailsHttpSession` wrapper monitor synchronization with a private
`ReentrantLock` so lazy session access no longer pins virtual-thread carrier
threads on `synchronized (this)`.
- Static-compile `grails-codecs-core` codec extension helpers and replace
dynamic self-dispatch with direct helper calls.
- Preserve existing public Groovy extension method descriptors by keeping
`Object` return types and the existing `HEXDIGITS` property shape.
## Why
Grails 8 runs on modern JDKs where virtual-thread friendliness matters in
hot request paths. `GrailsHttpSession` serialized wrapper access through an
object monitor, which can pin carrier threads when code blocks inside
synchronized regions. A private `ReentrantLock` keeps the wrapper's
serialization behavior without monitor pinning and also protects lazy session
creation consistently.
The codecs are small but widely used hot-path extension methods. Static
compilation removes dynamic dispatch overhead inside the codec implementations
while preserving the public dynamic extension surface that existing compiled
callers expect.
## Verification
- `./gradlew :grails-codecs-core:test :grails-web-common:test --tests
"grails.web.servlet.mvc.GrailsHttpSessionSpec" :grails-codecs-core:codeStyle
:grails-web-common:codeStyle --rerun-tasks`
- `./gradlew clean aggregateViolations :grails-test-report:check --continue`
- Violation reports were clean: Checkstyle, CodeNarc, PMD, SpotBugs.
- The full gate still hits pre-existing unrelated failures on clean
`origin/8.0.x`: `grails-validation:compileGroovy`,
`grails-data-graphql-core:compileGroovy`, and MongoDB/Testcontainers
environment failures. The two compile failures reproduce in a separate clean
`origin/8.0.x` worktree.
## Review
- Review gate passed for diff hash
`c44c66150eb78763308fec125cd0b86260881a48` with both Oracle and Codex reviewers
green.
--
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]