Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: ignore FormUrlEncodedBodyInRequestFilterTest for HTTP 2 #11508

Merged
merged 1 commit into from
Jan 15, 2025

Conversation

sdelamo
Copy link
Contributor

@sdelamo sdelamo commented Jan 15, 2025

The test is flaky for HTTP 2:

https://ge.micronaut.io/scans/tests?search.buildOutcome=failure&search.rootProjectNames=micronaut-parent&search.tags=ci&search.timeZoneId=Europe%2FMadrid&tests.container=io.micronaut.http.server.tck.tests.forms.FormUrlEncodedBodyInRequestFilterTest&tests.test=bodyParsingInFilter()&tests.unstableOnly=false

I don’t think it is that the test is badly written. I think it is an underlying issue of the HTTP2 path:

https://ge.micronaut.io/s/vllxe5czbs5jw/tests/task/:test-suite-http2-server-tck-netty:test/details/io.micronaut.http.server.tck.tests.forms.FormUrlEncodedBodyInRequestFilterTest/bodyParsingInFilter()/1/output

00:57:25.989 [Test worker] INFO  i.m.c.DefaultApplicationContext$RuntimeConfiguredEnvironment - Established active environments: [test]
00:57:26.033 [Test worker] WARN  i.m.http.ssl.SslConfiguration - The configuration micronaut.ssl.port is deprecated. Use micronaut.server.ssl.port instead.
00:57:26.920 [Test worker] WARN  i.m.h.c.n.ssl.NettyClientSslBuilder - HTTP Client is configured to trust all certificates ('insecure-trust-all-certificates' is set to true). Trusting all certificates is not secure and should not be used in production.
00:57:26.997 [Test worker] INFO  i.m.c.DefaultApplicationContext$RuntimeConfiguredEnvironment - Established active environments: [test]
00:57:27.038 [Test worker] WARN  i.m.http.ssl.SslConfiguration - The configuration micronaut.ssl.port is deprecated. Use micronaut.server.ssl.port instead.
00:57:27.646 [Test worker] WARN  i.m.h.c.n.ssl.NettyClientSslBuilder - HTTP Client is configured to trust all certificates ('insecure-trust-all-certificates' is set to true). Trusting all certificates is not secure and should not be used in production.
00:57:27.754 [Test worker] INFO  i.m.c.DefaultApplicationContext$RuntimeConfiguredEnvironment - Established active environments: [test]
00:57:27.811 [Test worker] WARN  i.m.http.ssl.SslConfiguration - The configuration micronaut.ssl.port is deprecated. Use micronaut.server.ssl.port instead.
00:57:28.019 [Test worker] WARN  i.m.h.c.n.ssl.NettyClientSslBuilder - HTTP Client is configured to trust all certificates ('insecure-trust-all-certificates' is set to true). Trusting all certificates is not secure and should not be used in production.
00:57:28.079 [default-nioEventLoopGroup-140-4] WARN  i.m.h.s.netty.RoutingInBoundHandler - Failed to build error response
java.lang.AssertionError: null
	at io.micronaut.http.body.stream.BaseSharedBuffer.subscribe0(BaseSharedBuffer.java:205)
	at io.micronaut.http.netty.body.StreamingNettyByteBody$SharedBuffer.subscribe(StreamingNettyByteBody.java:259)
	at io.micronaut.http.netty.body.StreamingNettyByteBody.close(StreamingNettyByteBody.java:177)
	at io.micronaut.http.server.netty.NettyHttpRequest.release(NettyHttpRequest.java:388)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.cleanupRequest(RoutingInBoundHandler.java:161)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.responseWritten(RoutingInBoundHandler.java:178)
	at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.responseWritten(NettyServerWebSocketUpgradeHandler.java:167)
	at io.micronaut.http.server.netty.handler.MultiplexedServerHandler$MultiplexedStream.finish(MultiplexedServerHandler.java:234)
	at io.micronaut.http.server.netty.handler.MultiplexedServerHandler$MultiplexedStream.writeFull(MultiplexedServerHandler.java:383)
	at io.micronaut.http.server.netty.handler.MultiplexedServerHandler$MultiplexedStream.write(MultiplexedServerHandler.java:260)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.lambda$writeResponse$0(RoutingInBoundHandler.java:298)
	at io.micronaut.core.execution.ImperativeExecutionFlowImpl.onComplete(ImperativeExecutionFlowImpl.java:132)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.writeResponse(RoutingInBoundHandler.java:274)
	at io.micronaut.http.server.netty.NettyRequestLifecycle.lambda$handleNormal$0(NettyRequestLifecycle.java:107)
	at io.micronaut.core.execution.ImperativeExecutionFlowImpl.onComplete(ImperativeExecutionFlowImpl.java:132)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl$OnComplete.apply(DelayedExecutionFlowImpl.java:379)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.work(DelayedExecutionFlowImpl.java:54)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.complete0(DelayedExecutionFlowImpl.java:72)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.complete(DelayedExecutionFlowImpl.java:78)
	at io.micronaut.http.body.stream.BaseSharedBuffer.subscribeFull0(BaseSharedBuffer.java:276)
	at io.micronaut.http.netty.body.StreamingNettyByteBody$SharedBuffer.lambda$subscribeFull$2(StreamingNettyByteBody.java:322)
	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:472)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
	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 java.base/java.lang.Thread.run(Thread.java:1583)
00:57:38.077 [default-nioEventLoopGroup-140-3] WARN  i.n.c.AbstractChannelHandlerContext - An exception 'java.lang.IllegalStateException: Already completed' [enable DEBUG level for full stacktrace] was thrown by a user handler's exceptionCaught() method while handling the following exception:
java.lang.IllegalStateException: Already completed
	at io.micronaut.core.execution.DelayedExecutionFlowImpl$Step.atomicSetOutput(DelayedExecutionFlowImpl.java:217)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.work(DelayedExecutionFlowImpl.java:55)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.complete0(DelayedExecutionFlowImpl.java:72)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.completeExceptionally(DelayedExecutionFlowImpl.java:83)
	at io.micronaut.http.client.netty.DefaultHttpClient$6.fail(DefaultHttpClient.java:1702)
	at io.micronaut.http.client.netty.Http1ResponseHandler$BeforeResponse.exceptionCaught(Http1ResponseHandler.java:147)
	at io.micronaut.http.client.netty.Http1ResponseHandler$ReaderState.channelInactive(Http1ResponseHandler.java:112)
	at io.micronaut.http.client.netty.Http1ResponseHandler.channelInactive(Http1ResponseHandler.java:83)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)
	at io.netty.handler.codec.http.HttpContentDecoder.channelInactive(HttpContentDecoder.java:235)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1352)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:301)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
	at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:850)
	at io.netty.handler.codec.http2.AbstractHttp2StreamChannel$Http2ChannelUnsafe$2.run(AbstractHttp2StreamChannel.java:797)
	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:472)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
	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 java.base/java.lang.Thread.run(Thread.java:1583)

The test is flaky for HTTP 2:

https://ge.micronaut.io/scans/tests?search.buildOutcome=failure&search.rootProjectNames=micronaut-parent&search.tags=ci&search.timeZoneId=Europe%2FMadrid&tests.container=io.micronaut.http.server.tck.tests.forms.FormUrlEncodedBodyInRequestFilterTest&tests.test=bodyParsingInFilter()&tests.unstableOnly=false

I don’t think it is that the test is badly written. I think it is an underlying issue of the HTTP2 path:

https://ge.micronaut.io/s/vllxe5czbs5jw/tests/task/:test-suite-http2-server-tck-netty:test/details/io.micronaut.http.server.tck.tests.forms.FormUrlEncodedBodyInRequestFilterTest/bodyParsingInFilter()/1/output

```
00:57:25.989 [Test worker] INFO  i.m.c.DefaultApplicationContext$RuntimeConfiguredEnvironment - Established active environments: [test]
00:57:26.033 [Test worker] WARN  i.m.http.ssl.SslConfiguration - The configuration micronaut.ssl.port is deprecated. Use micronaut.server.ssl.port instead.
00:57:26.920 [Test worker] WARN  i.m.h.c.n.ssl.NettyClientSslBuilder - HTTP Client is configured to trust all certificates ('insecure-trust-all-certificates' is set to true). Trusting all certificates is not secure and should not be used in production.
00:57:26.997 [Test worker] INFO  i.m.c.DefaultApplicationContext$RuntimeConfiguredEnvironment - Established active environments: [test]
00:57:27.038 [Test worker] WARN  i.m.http.ssl.SslConfiguration - The configuration micronaut.ssl.port is deprecated. Use micronaut.server.ssl.port instead.
00:57:27.646 [Test worker] WARN  i.m.h.c.n.ssl.NettyClientSslBuilder - HTTP Client is configured to trust all certificates ('insecure-trust-all-certificates' is set to true). Trusting all certificates is not secure and should not be used in production.
00:57:27.754 [Test worker] INFO  i.m.c.DefaultApplicationContext$RuntimeConfiguredEnvironment - Established active environments: [test]
00:57:27.811 [Test worker] WARN  i.m.http.ssl.SslConfiguration - The configuration micronaut.ssl.port is deprecated. Use micronaut.server.ssl.port instead.
00:57:28.019 [Test worker] WARN  i.m.h.c.n.ssl.NettyClientSslBuilder - HTTP Client is configured to trust all certificates ('insecure-trust-all-certificates' is set to true). Trusting all certificates is not secure and should not be used in production.
00:57:28.079 [default-nioEventLoopGroup-140-4] WARN  i.m.h.s.netty.RoutingInBoundHandler - Failed to build error response
java.lang.AssertionError: null
	at io.micronaut.http.body.stream.BaseSharedBuffer.subscribe0(BaseSharedBuffer.java:205)
	at io.micronaut.http.netty.body.StreamingNettyByteBody$SharedBuffer.subscribe(StreamingNettyByteBody.java:259)
	at io.micronaut.http.netty.body.StreamingNettyByteBody.close(StreamingNettyByteBody.java:177)
	at io.micronaut.http.server.netty.NettyHttpRequest.release(NettyHttpRequest.java:388)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.cleanupRequest(RoutingInBoundHandler.java:161)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.responseWritten(RoutingInBoundHandler.java:178)
	at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.responseWritten(NettyServerWebSocketUpgradeHandler.java:167)
	at io.micronaut.http.server.netty.handler.MultiplexedServerHandler$MultiplexedStream.finish(MultiplexedServerHandler.java:234)
	at io.micronaut.http.server.netty.handler.MultiplexedServerHandler$MultiplexedStream.writeFull(MultiplexedServerHandler.java:383)
	at io.micronaut.http.server.netty.handler.MultiplexedServerHandler$MultiplexedStream.write(MultiplexedServerHandler.java:260)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.lambda$writeResponse$0(RoutingInBoundHandler.java:298)
	at io.micronaut.core.execution.ImperativeExecutionFlowImpl.onComplete(ImperativeExecutionFlowImpl.java:132)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.writeResponse(RoutingInBoundHandler.java:274)
	at io.micronaut.http.server.netty.NettyRequestLifecycle.lambda$handleNormal$0(NettyRequestLifecycle.java:107)
	at io.micronaut.core.execution.ImperativeExecutionFlowImpl.onComplete(ImperativeExecutionFlowImpl.java:132)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl$OnComplete.apply(DelayedExecutionFlowImpl.java:379)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.work(DelayedExecutionFlowImpl.java:54)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.complete0(DelayedExecutionFlowImpl.java:72)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.complete(DelayedExecutionFlowImpl.java:78)
	at io.micronaut.http.body.stream.BaseSharedBuffer.subscribeFull0(BaseSharedBuffer.java:276)
	at io.micronaut.http.netty.body.StreamingNettyByteBody$SharedBuffer.lambda$subscribeFull$2(StreamingNettyByteBody.java:322)
	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:472)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
	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 java.base/java.lang.Thread.run(Thread.java:1583)
00:57:38.077 [default-nioEventLoopGroup-140-3] WARN  i.n.c.AbstractChannelHandlerContext - An exception 'java.lang.IllegalStateException: Already completed' [enable DEBUG level for full stacktrace] was thrown by a user handler's exceptionCaught() method while handling the following exception:
java.lang.IllegalStateException: Already completed
	at io.micronaut.core.execution.DelayedExecutionFlowImpl$Step.atomicSetOutput(DelayedExecutionFlowImpl.java:217)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.work(DelayedExecutionFlowImpl.java:55)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.complete0(DelayedExecutionFlowImpl.java:72)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.completeExceptionally(DelayedExecutionFlowImpl.java:83)
	at io.micronaut.http.client.netty.DefaultHttpClient$6.fail(DefaultHttpClient.java:1702)
	at io.micronaut.http.client.netty.Http1ResponseHandler$BeforeResponse.exceptionCaught(Http1ResponseHandler.java:147)
	at io.micronaut.http.client.netty.Http1ResponseHandler$ReaderState.channelInactive(Http1ResponseHandler.java:112)
	at io.micronaut.http.client.netty.Http1ResponseHandler.channelInactive(Http1ResponseHandler.java:83)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)
	at io.netty.handler.codec.http.HttpContentDecoder.channelInactive(HttpContentDecoder.java:235)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1352)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:301)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
	at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:850)
	at io.netty.handler.codec.http2.AbstractHttp2StreamChannel$Http2ChannelUnsafe$2.run(AbstractHttp2StreamChannel.java:797)
	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:472)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
	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 java.base/java.lang.Thread.run(Thread.java:1583)
```
@sdelamo sdelamo requested a review from graemerocher January 15, 2025 09:04
@sdelamo
Copy link
Contributor Author

sdelamo commented Jan 15, 2025

I run the test 100 times locally and it passes every time for me. 🤷‍♂️

#!/bin/bash

EXIT_STATUS=0

for ((i=1; i<=100; i++))
do
  ./gradlew :test-suite-http2-server-tck-netty:test --tests "io.micronaut.http.server.tck.netty.tests.NettyHttpServerTestSuite" --rerun-tasks || EXIT_STATUS=$?
  if [ $EXIT_STATUS -ne 0 ]; then
    exit $EXIT_STATUS
  fi
done

exit $EXIT_STATUS

@graemerocher graemerocher merged commit a7cd5dd into 4.7.x Jan 15, 2025
22 checks passed
@graemerocher graemerocher deleted the exclude-test-for-http2 branch January 15, 2025 12:02
sdelamo added a commit that referenced this pull request Jan 15, 2025
The test is flaky for HTTP 2:

https://ge.micronaut.io/scans/tests?search.buildOutcome=failure&search.rootProjectNames=micronaut-parent&search.tags=ci&search.timeZoneId=Europe%2FMadrid&tests.container=io.micronaut.http.server.tck.tests.forms.FormUrlEncodedBodyInRequestFilterTest&tests.test=bodyParsingInFilter()&tests.unstableOnly=false

I don’t think it is that the test is badly written. I think it is an underlying issue of the HTTP2 path:

https://ge.micronaut.io/s/vllxe5czbs5jw/tests/task/:test-suite-http2-server-tck-netty:test/details/io.micronaut.http.server.tck.tests.forms.FormUrlEncodedBodyInRequestFilterTest/bodyParsingInFilter()/1/output

```
00:57:25.989 [Test worker] INFO  i.m.c.DefaultApplicationContext$RuntimeConfiguredEnvironment - Established active environments: [test]
00:57:26.033 [Test worker] WARN  i.m.http.ssl.SslConfiguration - The configuration micronaut.ssl.port is deprecated. Use micronaut.server.ssl.port instead.
00:57:26.920 [Test worker] WARN  i.m.h.c.n.ssl.NettyClientSslBuilder - HTTP Client is configured to trust all certificates ('insecure-trust-all-certificates' is set to true). Trusting all certificates is not secure and should not be used in production.
00:57:26.997 [Test worker] INFO  i.m.c.DefaultApplicationContext$RuntimeConfiguredEnvironment - Established active environments: [test]
00:57:27.038 [Test worker] WARN  i.m.http.ssl.SslConfiguration - The configuration micronaut.ssl.port is deprecated. Use micronaut.server.ssl.port instead.
00:57:27.646 [Test worker] WARN  i.m.h.c.n.ssl.NettyClientSslBuilder - HTTP Client is configured to trust all certificates ('insecure-trust-all-certificates' is set to true). Trusting all certificates is not secure and should not be used in production.
00:57:27.754 [Test worker] INFO  i.m.c.DefaultApplicationContext$RuntimeConfiguredEnvironment - Established active environments: [test]
00:57:27.811 [Test worker] WARN  i.m.http.ssl.SslConfiguration - The configuration micronaut.ssl.port is deprecated. Use micronaut.server.ssl.port instead.
00:57:28.019 [Test worker] WARN  i.m.h.c.n.ssl.NettyClientSslBuilder - HTTP Client is configured to trust all certificates ('insecure-trust-all-certificates' is set to true). Trusting all certificates is not secure and should not be used in production.
00:57:28.079 [default-nioEventLoopGroup-140-4] WARN  i.m.h.s.netty.RoutingInBoundHandler - Failed to build error response
java.lang.AssertionError: null
	at io.micronaut.http.body.stream.BaseSharedBuffer.subscribe0(BaseSharedBuffer.java:205)
	at io.micronaut.http.netty.body.StreamingNettyByteBody$SharedBuffer.subscribe(StreamingNettyByteBody.java:259)
	at io.micronaut.http.netty.body.StreamingNettyByteBody.close(StreamingNettyByteBody.java:177)
	at io.micronaut.http.server.netty.NettyHttpRequest.release(NettyHttpRequest.java:388)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.cleanupRequest(RoutingInBoundHandler.java:161)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.responseWritten(RoutingInBoundHandler.java:178)
	at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.responseWritten(NettyServerWebSocketUpgradeHandler.java:167)
	at io.micronaut.http.server.netty.handler.MultiplexedServerHandler$MultiplexedStream.finish(MultiplexedServerHandler.java:234)
	at io.micronaut.http.server.netty.handler.MultiplexedServerHandler$MultiplexedStream.writeFull(MultiplexedServerHandler.java:383)
	at io.micronaut.http.server.netty.handler.MultiplexedServerHandler$MultiplexedStream.write(MultiplexedServerHandler.java:260)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.lambda$writeResponse$0(RoutingInBoundHandler.java:298)
	at io.micronaut.core.execution.ImperativeExecutionFlowImpl.onComplete(ImperativeExecutionFlowImpl.java:132)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.writeResponse(RoutingInBoundHandler.java:274)
	at io.micronaut.http.server.netty.NettyRequestLifecycle.lambda$handleNormal$0(NettyRequestLifecycle.java:107)
	at io.micronaut.core.execution.ImperativeExecutionFlowImpl.onComplete(ImperativeExecutionFlowImpl.java:132)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl$OnComplete.apply(DelayedExecutionFlowImpl.java:379)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.work(DelayedExecutionFlowImpl.java:54)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.complete0(DelayedExecutionFlowImpl.java:72)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.complete(DelayedExecutionFlowImpl.java:78)
	at io.micronaut.http.body.stream.BaseSharedBuffer.subscribeFull0(BaseSharedBuffer.java:276)
	at io.micronaut.http.netty.body.StreamingNettyByteBody$SharedBuffer.lambda$subscribeFull$2(StreamingNettyByteBody.java:322)
	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:472)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
	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 java.base/java.lang.Thread.run(Thread.java:1583)
00:57:38.077 [default-nioEventLoopGroup-140-3] WARN  i.n.c.AbstractChannelHandlerContext - An exception 'java.lang.IllegalStateException: Already completed' [enable DEBUG level for full stacktrace] was thrown by a user handler's exceptionCaught() method while handling the following exception:
java.lang.IllegalStateException: Already completed
	at io.micronaut.core.execution.DelayedExecutionFlowImpl$Step.atomicSetOutput(DelayedExecutionFlowImpl.java:217)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.work(DelayedExecutionFlowImpl.java:55)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.complete0(DelayedExecutionFlowImpl.java:72)
	at io.micronaut.core.execution.DelayedExecutionFlowImpl.completeExceptionally(DelayedExecutionFlowImpl.java:83)
	at io.micronaut.http.client.netty.DefaultHttpClient$6.fail(DefaultHttpClient.java:1702)
	at io.micronaut.http.client.netty.Http1ResponseHandler$BeforeResponse.exceptionCaught(Http1ResponseHandler.java:147)
	at io.micronaut.http.client.netty.Http1ResponseHandler$ReaderState.channelInactive(Http1ResponseHandler.java:112)
	at io.micronaut.http.client.netty.Http1ResponseHandler.channelInactive(Http1ResponseHandler.java:83)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)
	at io.netty.handler.codec.http.HttpContentDecoder.channelInactive(HttpContentDecoder.java:235)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1352)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:301)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
	at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:850)
	at io.netty.handler.codec.http2.AbstractHttp2StreamChannel$Http2ChannelUnsafe$2.run(AbstractHttp2StreamChannel.java:797)
	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:472)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
	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 java.base/java.lang.Thread.run(Thread.java:1583)
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants