David
David
I'll just go ahead and close this, feel free to reopen if you want to work on it.
@grzegorzbor in order to simplify the internal architecture we decided to pass sync responses through the async pipeline (as already completed futures). @dzikoysk any ideas for this one? 😬
> Well, the previous stacktrace is in fact "cleaner" in terms of visibility, but that's mostly because it didn't work properly and was affected by several issues like race conditions...
But to the point of this issue, could we improve stack traces when using completed futures somehow, or is it not feasible?
``` java.lang.NullPointerException at io.javalin.TestRequest.queryParam_returns_null_for_unknown_param$lambda-45$lambda-44(TestRequest.kt:172) at io.javalin.routing.HandlerEntry.handle(HandlerEntry.kt:19) at io.javalin.http.JavalinServlet$lifecycle$4$1$1.invoke(JavalinServlet.kt:79) at io.javalin.http.JavalinServlet$lifecycle$4$1$1.invoke(JavalinServlet.kt:79) at io.javalin.http.JavalinServletHandler$executeNextTask$2$1.invoke(JavalinServletHandler.kt:105) at io.javalin.http.JavalinServletHandler$executeNextTask$2$1.invoke(JavalinServletHandler.kt:105) at io.javalin.http.JavalinServletHandler.handleFutureResultReference(JavalinServletHandler.kt:128) at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:105) at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-0(JavalinServletHandler.kt:93) at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309) at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:93) at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:94) at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:684)...
This was done by adding a small function call to the beginning of the exception mapper: ```kotlin if (stackTraceCleaner != null) { exception.stackTrace = stackTraceCleaner.invoke(exception.stackTrace) } ``` This could be...
> But this will only work inside the exception mapper functions, correct? Yes, but that should cover all of the frames that you are interested in. > So in the...
Ah, gotcha. This is a strange feature to include, but it's also very harmless. I'll put together a PR next week ☺️
https://github.com/javalin/javalin/pull/1648
Merged !