Micronaut Core 5.2.16: Netty shutdown deadlock fixed, truncated multipart bodies refused
The Micronaut project published micronaut-core v5.2.16 on 16 October 2026 (10:25 UTC). It is a patch release on the 5.2.x line; a separate v4.10.32 for the 4.x line came out a day earlier. The release notes list twelve bug fixes, six improvements and thirteen other changes, most of them from Denis Stepanov and Graeme Rocher.
Server lifecycle. Two fixes concern shutting down. One resolves a lock-order deadlock between NettyHttpServer and the stopping of the application context (#13715). Another makes the graceful shutdown run before the default Netty server is stopped (#13823). A third pair deals with context refresh: the bootstrap context that a refresh replaces is now closed and the order of builder properties is kept (#13956), and the environment is recovered when a refresh fails (#13974).
HTTP handling. Several fixes tighten how requests and errors are processed:
- a multipart body that ends before its closing boundary is refused instead of being accepted (#13793);
- when writing the response throws, the server answers with 500 and closes the connection (#13795);
- body failures read through an
InputStreamare now answered with their own status (#13869); Accept-Charsetis ignored when readingStringrequest bodies (#13801), and missing Fetch Metadata values were added (#13839);- service clients inherit connection-pool settings (#13906).

Dependency injection. A bean definition no longer fails when one of its @Indexed types is missing (#13794); getBeanRegistrations(Class, Qualifier) now applies the qualifier (#13726); the target of a qualified proxy-target bean resolves as the proxy's own (#13781); and nested indexed configuration properties resolve for @EachProperty(list = true) (#13697). Processor options set as system properties are restored after annotation processing (#13780).
Python interop. Roughly a third of the entries concern Micronaut's support for Python running on GraalPy. Java exceptions are now Python Exception instances in GraalPy contexts (#13828); timezone-aware Python datetimes map to Instant, OffsetDateTime and ZonedDateTime (#13833); a pooled Python context can be pre-started and warmed up after startup (#13834). Other changes fix method dispatch against Java base classes: inherited varargs methods (#13845), raw generic bases returning a type variable (#13846), constructing the Java base before __init__ (#13878), and leaving methods with $ in their names out of the dispatcher (#13879). Plain Python helper classes that the processor cannot bridge are now compiled (#13829).
Two contributors made their first contribution in this release. The full list is in the compare view from v5.2.15.
Source: Micronaut, "Release v5.2.16" (GitHub) — https://github.com/micronaut-projects/micronaut-core/releases/tag/v5.2.16