Skip to content

Spring Webflux suspend handler not working #34475

@FrontierPsychiatrist

Description

@FrontierPsychiatrist

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    in: webIssues in web modules (web, webmvc, webflux, websocket)status: invalidAn issue that we don't feel is validtheme: kotlinAn issue related to Kotlin support

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions