-
Notifications
You must be signed in to change notification settings - Fork 38.8k
Description
I am trying out the support for suspend handler functions as described in this part of the documentation. I've had great success in other projects using the coRouter DSL but wanted to see how it looks and feels when using suspend directly on handlers.
First of all I wanted to say that I found it a bit hard to understand in the linked documentation if suspend handlers are only for Spring Webflux or if they will also work in Spring MVC (basically the spring-boot-starter-web package).
Anyway, in neither case could I get them to work. I always get a NPE when the coroutine context is being accessed.
For Webflux:
2025-02-24T09:43:52.976+01:00 ERROR 97430 --- [ux-http-epoll-2] a.w.r.e.AbstractErrorWebExceptionHandler : [dc4ac96e-1] 500 Server Error for HTTP GET "/hello-suspend"
java.lang.NullPointerException: null
at kotlin.coroutines.jvm.internal.ContinuationImpl.getContext(ContinuationImpl.kt:105) ~[kotlin-stdlib-2.1.10.jar:2.1.10-release-473]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
*__checkpoint ⇢ HTTP GET "/hello-suspend" [ExceptionHandlingWebHandler]
Original Stack Trace:
at kotlin.coroutines.jvm.internal.ContinuationImpl.getContext(ContinuationImpl.kt:105) ~[kotlin-stdlib-2.1.10.jar:2.1.10-release-473]
at kotlin.coroutines.jvm.internal.ContinuationImpl.intercepted(ContinuationImpl.kt:112) ~[kotlin-stdlib-2.1.10.jar:2.1.10-release-473]
at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt.intercepted(IntrinsicsJvm.kt:182) ~[kotlin-stdlib-2.1.10.jar:2.1.10-release-473]
at kotlinx.coroutines.DelayKt.delay(Delay.kt:172) ~[kotlinx-coroutines-core-jvm-1.8.1.jar:na]
at com.example.app.Controller.getHello(Controller.kt:14) ~[main/:na]
[... abbreviated]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na]
I hope I have not overlooked something simple. I tried to play around with dependencies and versions, but it never worked. I have attached a demo application with a test that fails.
Thank you for your support.