You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On Spring Boot WebFlux project, GraphQL-Kotlin doesn't receive POST request and send response correctly.
When running example project (attached git repository below) on JVM, it works correctly.
On the other hand, native-compiled binaries doesn't work well.
2024-12-31T18:24:16.782+07:00 DEBUG 57461 --- [ctor-http-nio-2] r.n.http.server.HttpServerOperations : [282e45cb, L:/127.0.0.1:8080 - R:/127.0.0.1:56835] Increasing pending responses, now 1
2024-12-31T18:24:16.782+07:00 DEBUG 57461 --- [ctor-http-nio-2] reactor.netty.http.server.HttpServer : [282e45cb-2, L:/127.0.0.1:8080 - R:/127.0.0.1:56835] Handler is being applied: org.springframework.http.server.reactive.ReactorHttpHandlerAdapter@4066a35e
2024-12-31T18:24:16.782+07:00 TRACE 57461 --- [ctor-http-nio-2] o.s.w.s.adapter.HttpWebHandlerAdapter : [282e45cb-2] HTTP POST "/graphql", headers={masked}
2024-12-31T18:24:16.782+07:00 TRACE 57461 --- [ctor-http-nio-2] o.s.w.r.f.server.RequestPredicates : Method "POST" matches against value "POST"
2024-12-31T18:24:16.782+07:00 TRACE 57461 --- [ctor-http-nio-2] o.s.w.r.f.server.RequestPredicates : Pattern "/graphql" matches against value "/graphql"
2024-12-31T18:24:16.782+07:00 TRACE 57461 --- [ctor-http-nio-2] o.s.w.r.function.server.RouterFunctions : [282e45cb-2] Matched (((POST && /graphql) || (GET && /graphql)) && !org.springframework.web.reactive.function.server.CoRouterFunctionDsl$$Lambda$29ea120da357451ff42953e32557fe28557e30a8@27aaf9c1)
2024-12-31T18:24:16.782+07:00 DEBUG 57461 --- [ctor-http-nio-2] o.s.w.r.f.s.s.RouterFunctionMapping : [282e45cb-2] Mapped to org.springframework.web.reactive.function.server.CoRouterFunctionDsl$CoroutineContextAwareHandlerFunction@2dd03385
2024-12-31T18:24:16.783+07:00 DEBUG 57461 --- [ctor-http-nio-2] o.s.http.codec.json.Jackson2JsonDecoder : Failed to evaluate Jackson deserialization for type [[simple type, class com.expediagroup.graphql.server.types.GraphQLServerRequest]]
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Class com.expediagroup.graphql.server.types.GraphQLServerRequestDeserializer has no default (no arg) constructor
at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1888)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:321)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:284)
at com.fasterxml.jackson.databind.deser.DeserializerCache.hasValueDeserializerFor(DeserializerCache.java:224)
at com.fasterxml.jackson.databind.DeserializationContext.hasValueDeserializerFor(DeserializationContext.java:614)
at com.fasterxml.jackson.databind.ObjectMapper.canDeserialize(ObjectMapper.java:3699)
at org.springframework.http.codec.json.AbstractJackson2Decoder.canDecode(AbstractJackson2Decoder.java:116)
at org.springframework.http.codec.DecoderHttpMessageReader.canRead(DecoderHttpMessageReader.java:97)
at org.springframework.web.reactive.function.BodyExtractors.readWithMessageReaders(BodyExtractors.java:198)
at org.springframework.web.reactive.function.BodyExtractors.lambda$toMono$2(BodyExtractors.java:84)
at org.springframework.web.reactive.function.server.DefaultServerRequest.bodyInternal(DefaultServerRequest.java:183)
at org.springframework.web.reactive.function.server.DefaultServerRequest.body(DefaultServerRequest.java:173)
at org.springframework.web.reactive.function.server.DefaultServerRequest.bodyToMono(DefaultServerRequest.java:209)
at com.expediagroup.graphql.server.spring.execution.SpringGraphQLRequestParser.getRequestFromPost(SpringGraphQLRequestParser.kt:72)
at com.expediagroup.graphql.server.spring.execution.SpringGraphQLRequestParser.parseRequest$suspendImpl(SpringGraphQLRequestParser.kt:47)
at com.expediagroup.graphql.server.spring.execution.SpringGraphQLRequestParser.parseRequest(SpringGraphQLRequestParser.kt)
at com.expediagroup.graphql.server.spring.execution.SpringGraphQLRequestParser.parseRequest(SpringGraphQLRequestParser.kt:39)
at com.expediagroup.graphql.server.execution.GraphQLServer$execute$2.invokeSuspend(GraphQLServer.kt:50)
at com.expediagroup.graphql.server.execution.GraphQLServer$execute$2.invoke(GraphQLServer.kt)
at com.expediagroup.graphql.server.execution.GraphQLServer$execute$2.invoke(GraphQLServer.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
at com.expediagroup.graphql.server.execution.GraphQLServer.execute$suspendImpl(GraphQLServer.kt:49)
at com.expediagroup.graphql.server.execution.GraphQLServer.execute(GraphQLServer.kt)
at com.expediagroup.graphql.server.spring.GraphQLRoutesConfiguration$graphQLRoutes$1$1.invokeSuspend(GraphQLRoutesConfiguration.kt:48)
at com.expediagroup.graphql.server.spring.GraphQLRoutesConfiguration$graphQLRoutes$1$1.invoke(GraphQLRoutesConfiguration.kt)
at com.expediagroup.graphql.server.spring.GraphQLRoutesConfiguration$graphQLRoutes$1$1.invoke(GraphQLRoutesConfiguration.kt)
at org.springframework.web.reactive.function.server.CoRouterFunctionDsl$asHandlerFunction$1.invokeSuspend(CoRouterFunctionDsl.kt:736)
at org.springframework.web.reactive.function.server.CoRouterFunctionDsl$asHandlerFunction$1.invoke(CoRouterFunctionDsl.kt)
at org.springframework.web.reactive.function.server.CoRouterFunctionDsl$asHandlerFunction$1.invoke(CoRouterFunctionDsl.kt)
at org.springframework.web.reactive.function.server.CoRouterFunctionDsl$CoroutineContextAwareHandlerFunction$handle$1.invokeSuspend(CoRouterFunctionDsl.kt:817)
at org.springframework.web.reactive.function.server.CoRouterFunctionDsl$CoroutineContextAwareHandlerFunction$handle$1.invoke(CoRouterFunctionDsl.kt)
at org.springframework.web.reactive.function.server.CoRouterFunctionDsl$CoroutineContextAwareHandlerFunction$handle$1.invoke(CoRouterFunctionDsl.kt)
at org.springframework.web.reactive.function.server.CoRouterFunctionDsl$asMono$1.invokeSuspend(CoRouterFunctionDsl.kt:730)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.reactor.MonoKt.monoInternal$lambda$2(Mono.kt:92)
at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:61)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:259)
at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:865)
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200)
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onNext(FluxConcatArray.java:202)
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onNext(FluxConcatArray.java:202)
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:259)
at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:865)
at reactor.core.publisher.FluxConcatMap$WeakScalarSubscription.request(FluxConcatMap.java:480)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2331)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:339)
at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108)
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.request(FluxConcatArray.java:278)
at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108)
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164)
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.request(FluxConcatArray.java:278)
at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108)
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164)
at reactor.core.publisher.FluxPeek$PeekSubscriber.request(FluxPeek.java:138)
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2331)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:339)
at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241)
at reactor.core.publisher.MonoNext$NextSubscriber.onSubscribe(MonoNext.java:70)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onSubscribe(FluxConcatMapNoPrefetch.java:164)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53)
at reactor.core.publisher.Mono.subscribe(Mono.java:4568)
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265)
at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
at reactor.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55)
at reactor.netty.http.server.HttpServer$HttpServerHandle.onStateChange(HttpServer.java:1176)
at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:710)
at reactor.netty.transport.ServerTransport$ChildObserver.onStateChange(ServerTransport.java:481)
at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:652)
at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:240)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:333)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:455)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at [email protected]/java.lang.Thread.runWith(Thread.java:1596)
at [email protected]/java.lang.Thread.run(Thread.java:1583)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:832)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:211)
2024-12-31T18:24:16.788+07:00 TRACE 57461 --- [ctor-http-nio-2] o.s.w.s.adapter.HttpWebHandlerAdapter : [282e45cb-2] Completed 400 BAD_REQUEST, headers={masked}
2024-12-31T18:24:16.788+07:00 TRACE 57461 --- [ctor-http-nio-2] o.s.h.s.r.ReactorHttpHandlerAdapter : [282e45cb-2, L:/127.0.0.1:8080 - R:/127.0.0.1:56835] Handling completed
2024-12-31T18:24:16.788+07:00 DEBUG 57461 --- [ctor-http-nio-2] r.n.http.server.HttpServerOperations : [282e45cb-2, L:/127.0.0.1:8080 - R:/127.0.0.1:56835] Last HTTP response frame
2024-12-31T18:24:16.788+07:00 DEBUG 57461 --- [ctor-http-nio-2] r.n.http.server.HttpServerOperations : [282e45cb-2, L:/127.0.0.1:8080 - R:/127.0.0.1:56835] No sendHeaders() called before complete, sending zero-length header
2024-12-31T18:24:16.788+07:00 DEBUG 57461 --- [ctor-http-nio-2] r.n.http.server.HttpServerOperations : [282e45cb-2, L:/127.0.0.1:8080 - R:/127.0.0.1:56835] Decreasing pending responses, now 0
2024-12-31T18:24:16.788+07:00 DEBUG 57461 --- [ctor-http-nio-2] r.n.http.server.HttpServerOperations : [282e45cb-2, L:/127.0.0.1:8080 - R:/127.0.0.1:56835] Last HTTP packet was sent, terminating the channel
2024-12-31T18:24:16.788+07:00 DEBUG 57461 --- [ctor-http-nio-2] r.netty.channel.ChannelOperations : [282e45cb-2, L:/127.0.0.1:8080 - R:/127.0.0.1:56835] [HttpServer] Channel inbound receiver cancelled (subscription disposed).
2024-12-31T18:24:16.788+07:00 TRACE 57461 --- [ctor-http-nio-2] r.netty.channel.ChannelOperations : [282e45cb, L:/127.0.0.1:8080 - R:/127.0.0.1:56835] Disposing ChannelOperation from a channel
java.lang.Exception: ChannelOperation terminal stack
at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:492)
at reactor.netty.http.server.HttpServerOperations.cleanHandlerTerminate(HttpServerOperations.java:820)
at reactor.netty.http.server.HttpTrafficHandler.operationComplete(HttpTrafficHandler.java:476)
at reactor.netty.http.server.HttpTrafficHandler.operationComplete(HttpTrafficHandler.java:65)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:625)
at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:105)
at io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48)
at io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:748)
at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:303)
at io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:383)
at io.netty.channel.socket.nio.NioSocketChannel.doWrite(NioSocketChannel.java:421)
at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:931)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:359)
at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:895)
at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:935)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921)
at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531)
at io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125)
at io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:937)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921)
at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907)
at io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:127)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:937)
at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:957)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:982)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:950)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:1000)
at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1025)
at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:306)
at reactor.netty.http.server.HttpServerOperations.onOutboundComplete(HttpServerOperations.java:756)
at reactor.netty.channel.ChannelOperations.onComplete(ChannelOperations.java:249)
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:210)
at reactor.core.publisher.Operators.complete(Operators.java:137)
at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46)
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53)
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:241)
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204)
at reactor.core.publisher.Operators.complete(Operators.java:137)
at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46)
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53)
at reactor.core.publisher.Mono.subscribe(Mono.java:4568)
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265)
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204)
at reactor.core.publisher.FluxTap$TapSubscriber.onComplete(FluxTap.java:286)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2231)
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2231)
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2231)
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2231)
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:250)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:324)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:250)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:324)
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549)
at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89)
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:231)
at reactor.core.publisher.FluxConcatArray.subscribe(FluxConcatArray.java:79)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:176)
at kotlinx.coroutines.reactor.MonoCoroutine.onCompleted(Mono.kt:103)
at kotlinx.coroutines.AbstractCoroutine.onCompletionInternal(AbstractCoroutine.kt:93)
at kotlinx.coroutines.JobSupport.tryFinalizeSimpleState(JobSupport.kt:296)
at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:860)
at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:832)
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:100)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.reactor.MonoKt.monoInternal$lambda$2(Mono.kt:92)
at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:61)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:259)
at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:865)
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200)
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onNext(FluxConcatArray.java:202)
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onNext(FluxConcatArray.java:202)
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:259)
at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:865)
at reactor.core.publisher.FluxConcatMap$WeakScalarSubscription.request(FluxConcatMap.java:480)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2331)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:339)
at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108)
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.request(FluxConcatArray.java:278)
at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108)
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164)
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.request(FluxConcatArray.java:278)
at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108)
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164)
at reactor.core.publisher.FluxPeek$PeekSubscriber.request(FluxPeek.java:138)
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2331)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:339)
at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241)
at reactor.core.publisher.MonoNext$NextSubscriber.onSubscribe(MonoNext.java:70)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onSubscribe(FluxConcatMapNoPrefetch.java:164)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53)
at reactor.core.publisher.Mono.subscribe(Mono.java:4568)
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265)
at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
at reactor.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55)
at reactor.netty.http.server.HttpServer$HttpServerHandle.onStateChange(HttpServer.java:1176)
at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:710)
at reactor.netty.transport.ServerTransport$ChildObserver.onStateChange(ServerTransport.java:481)
at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:652)
at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:240)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:333)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:455)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at [email protected]/java.lang.Thread.runWith(Thread.java:1596)
at [email protected]/java.lang.Thread.run(Thread.java:1583)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:832)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:211)
2024-12-31T18:24:16.828+07:00 DEBUG 57461 --- [ctor-http-nio-2] r.n.channel.ChannelOperationsHandler : [282e45cb, L:/127.0.0.1:8080 - R:/127.0.0.1:56835] No ChannelOperation attached.
Also, GraphiQL doesn't work because resource not found.
Note that if you run with GET request below, it seems running but empty response will be returned.
curl -s -X GET -H "Content-Type: application/json"'http://localhost:8080/graphql?query=%7BlistBooks%7Btitle%7D%7D'
Trace logs output:
2024-12-31T18:25:31.418+07:00 DEBUG 57461 --- [ctor-http-nio-3] r.n.http.server.HttpServerOperations : [574214f1, L:/[0:0:0:0:0:0:0:1]:8080 - R:/[0:0:0:0:0:0:0:1]:57803] New http connection, requesting read
2024-12-31T18:25:31.418+07:00 DEBUG 57461 --- [ctor-http-nio-3] r.netty.transport.TransportConfig : [574214f1, L:/[0:0:0:0:0:0:0:1]:8080 - R:/[0:0:0:0:0:0:0:1]:57803] Initialized pipeline DefaultChannelPipeline{(reactor.left.httpCodec = io.netty.handler.codec.http.HttpServerCodec), (reactor.left.httpTrafficHandler = reactor.netty.http.server.HttpTrafficHandler), (reactor.right.reactiveBridge = reactor.netty.channel.ChannelOperationsHandler)}
2024-12-31T18:25:31.419+07:00 DEBUG 57461 --- [ctor-http-nio-3] r.n.http.server.HttpServerOperations : [574214f1, L:/[0:0:0:0:0:0:0:1]:8080 - R:/[0:0:0:0:0:0:0:1]:57803] Increasing pending responses, now 1
2024-12-31T18:25:31.419+07:00 DEBUG 57461 --- [ctor-http-nio-3] reactor.netty.http.server.HttpServer : [574214f1-1, L:/[0:0:0:0:0:0:0:1]:8080 - R:/[0:0:0:0:0:0:0:1]:57803] Handler is being applied: org.springframework.http.server.reactive.ReactorHttpHandlerAdapter@4066a35e
2024-12-31T18:25:31.419+07:00 TRACE 57461 --- [ctor-http-nio-3] o.s.w.s.adapter.HttpWebHandlerAdapter : [574214f1-3] HTTP GET "/graphql?query=%7BlistBooks%7Btitle%7D%7D", headers={masked}
2024-12-31T18:25:31.419+07:00 TRACE 57461 --- [ctor-http-nio-3] o.s.w.r.f.server.RequestPredicates : Method "POST" does not match against value "GET"
2024-12-31T18:25:31.419+07:00 TRACE 57461 --- [ctor-http-nio-3] o.s.w.r.f.server.RequestPredicates : Method "GET" matches against value "GET"
2024-12-31T18:25:31.419+07:00 TRACE 57461 --- [ctor-http-nio-3] o.s.w.r.f.server.RequestPredicates : Pattern "/graphql" matches against value "/graphql"
2024-12-31T18:25:31.419+07:00 TRACE 57461 --- [ctor-http-nio-3] o.s.w.r.function.server.RouterFunctions : [574214f1-3] Matched (((POST && /graphql) || (GET && /graphql)) && !org.springframework.web.reactive.function.server.CoRouterFunctionDsl$$Lambda$29ea120da357451ff42953e32557fe28557e30a8@27aaf9c1)
2024-12-31T18:25:31.419+07:00 DEBUG 57461 --- [ctor-http-nio-3] o.s.w.r.f.s.s.RouterFunctionMapping : [574214f1-3] Mapped to org.springframework.web.reactive.function.server.CoRouterFunctionDsl$CoroutineContextAwareHandlerFunction@2dd03385
2024-12-31T18:25:31.420+07:00 DEBUG 57461 --- [ctor-http-nio-3] notprivacysafe.graphql.GraphQL : Executing request. operation name: 'null'. query: '{listBooks{title}}'. variables '{}'
2024-12-31T18:25:31.420+07:00 DEBUG 57461 --- [ctor-http-nio-3] notprivacysafe.graphql.GraphQL : Parsing query: '{listBooks{title}}'...
2024-12-31T18:25:31.422+07:00 DEBUG 57461 --- [ctor-http-nio-3] notprivacysafe.graphql.GraphQL : Validating query: '{listBooks{title}}'
2024-12-31T18:25:31.423+07:00 DEBUG 57461 --- [ctor-http-nio-3] notprivacysafe.graphql.GraphQL : Executing '6f4110a4-d4a2-4d09-8c63-833f103a338d'. operation name: 'null'. query: '{listBooks{title}}'. variables '{}'
2024-12-31T18:25:31.423+07:00 DEBUG 57461 --- [ctor-http-nio-3] n.graphql.execution.Execution : Executing '6f4110a4-d4a2-4d09-8c63-833f103a338d' query operation: 'QUERY' using 'graphql.execution.AsyncExecutionStrategy' execution strategy
2024-12-31T18:25:31.423+07:00 DEBUG 57461 --- [ctor-http-nio-3] .i.d.DataLoaderDispatcherInstrumentation : Dispatching data loaders ([AuthorDataLoader])
2024-12-31T18:25:31.423+07:00 DEBUG 57461 --- [ctor-http-nio-3] graphql.execution.ExecutionStrategy : '6f4110a4-d4a2-4d09-8c63-833f103a338d' completing field '/listBooks'...
2024-12-31T18:25:31.423+07:00 DEBUG 57461 --- [ctor-http-nio-3] graphql.execution.ExecutionStrategy : '6f4110a4-d4a2-4d09-8c63-833f103a338d' completing field '/listBooks[0]/title'...
2024-12-31T18:25:31.423+07:00 DEBUG 57461 --- [ctor-http-nio-3] graphql.execution.ExecutionStrategy : '6f4110a4-d4a2-4d09-8c63-833f103a338d' completing field '/listBooks[1]/title'...
2024-12-31T18:25:31.423+07:00 DEBUG 57461 --- [ctor-http-nio-3] graphql.execution.ExecutionStrategy : '6f4110a4-d4a2-4d09-8c63-833f103a338d' completing field '/listBooks[2]/title'...
2024-12-31T18:25:31.423+07:00 DEBUG 57461 --- [ctor-http-nio-3] .i.d.DataLoaderDispatcherInstrumentation : Dispatching data loaders ([AuthorDataLoader])
2024-12-31T18:25:31.423+07:00 DEBUG 57461 --- [ctor-http-nio-3] graphql.GraphQL : Execution '6f4110a4-d4a2-4d09-8c63-833f103a338d' completed with zero errors
2024-12-31T18:25:31.424+07:00 TRACE 57461 --- [ctor-http-nio-3] o.s.http.codec.json.Jackson2JsonEncoder : [574214f1-3] Encoding [GraphQLResponse(data={listBooks=[{title=Flowers to Algernon}, {title=The Catcher in the Rye}, {title=ライ麦畑でつかまえて (The Catcher in the Rye)}]}, errors=null, extensions=null)]
2024-12-31T18:25:31.424+07:00 DEBUG 57461 --- [ctor-http-nio-3] r.n.http.server.HttpServerOperations : [574214f1-1, L:/[0:0:0:0:0:0:0:1]:8080 - R:/[0:0:0:0:0:0:0:1]:57803] Decreasing pending responses, now 0
2024-12-31T18:25:31.424+07:00 DEBUG 57461 --- [ctor-http-nio-3] r.n.http.server.HttpServerOperations : [574214f1-1, L:/[0:0:0:0:0:0:0:1]:8080 - R:/[0:0:0:0:0:0:0:1]:57803] Last HTTP packet was sent, terminating the channel
2024-12-31T18:25:31.424+07:00 DEBUG 57461 --- [ctor-http-nio-3] r.netty.channel.ChannelOperations : [574214f1-1, L:/[0:0:0:0:0:0:0:1]:8080 - R:/[0:0:0:0:0:0:0:1]:57803] [HttpServer] Channel inbound receiver cancelled (operation cancelled).
2024-12-31T18:25:31.424+07:00 TRACE 57461 --- [ctor-http-nio-3] o.s.w.s.adapter.HttpWebHandlerAdapter : [574214f1-3] Completed 200 OK, headers={masked}
2024-12-31T18:25:31.424+07:00 TRACE 57461 --- [ctor-http-nio-3] o.s.h.s.r.ReactorHttpHandlerAdapter : [574214f1-1, L:/[0:0:0:0:0:0:0:1]:8080 - R:/[0:0:0:0:0:0:0:1]:57803] Handling completed
2024-12-31T18:25:31.424+07:00 DEBUG 57461 --- [ctor-http-nio-3] r.n.http.server.HttpServerOperations : [574214f1-1, L:/[0:0:0:0:0:0:0:1]:8080 - R:/[0:0:0:0:0:0:0:1]:57803] Last HTTP response frame
2024-12-31T18:25:31.424+07:00 TRACE 57461 --- [ctor-http-nio-3] r.netty.channel.ChannelOperations : [574214f1, L:/[0:0:0:0:0:0:0:1]:8080 - R:/[0:0:0:0:0:0:0:1]:57803] Disposing ChannelOperation from a channel
java.lang.Exception: ChannelOperation terminal stack
at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:492)
at [email protected]/java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(DirectMethodHandle$Holder)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:566)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at [email protected]/java.lang.Thread.runWith(Thread.java:1596)
at [email protected]/java.lang.Thread.run(Thread.java:1583)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:832)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:211)
Expected behavior
Works correctly same as running on JVM.
The text was updated successfully, but these errors were encountered:
Library Version
graphql-kotlin-spring-server:8.2.1
OS: macOS Sonoma (Apple M1 Pro)
JVM:
graalvm-ce-21
Describe the bug
On Spring Boot WebFlux project, GraphQL-Kotlin doesn't receive POST request and send response correctly.
When running example project (attached git repository below) on JVM, it works correctly.
On the other hand, native-compiled binaries doesn't work well.
I'm following this documentation for native build.
To Reproduce
Clone the example project.
Run
./gradlew nativeCompile
.Run
./build/native/nativeCompile/application
Run query below to http://localhost:8080/graphql
Trace logs output:
Also, GraphiQL doesn't work because resource not found.
Note that if you run with GET request below, it seems running but empty response will be returned.
Trace logs output:
Expected behavior
Works correctly same as running on JVM.
The text was updated successfully, but these errors were encountered: