[ https://issues.apache.org/jira/browse/IGNITE-26418?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Tupitsyn updated IGNITE-26418: ------------------------------------ Description: *CompletedFileUploadSubscriber* releases accumulated buffers only on successful completion. If there is an exception and *result* future is in failed state, we never release accumulated buffers. It might be better to save the buffers to temp files to avoid hogging Netty buffers and keeping the entire upload in memory. {code} [2025-09-11T11:52:39,799][ERROR][iect_n_3345-network-worker-1][ResourceLeakDetector] LEAK: ByteBuf.release() was not called before it's garbage-collected. See https://netty.io/wiki/reference-counted-objects.html for more information. 11:52:39 Recent access records: 11:52:39 #1: 11:52:39 io.netty.handler.codec.http.multipart.AbstractMemoryHttpData.touch(AbstractMemoryHttpData.java:299) 11:52:39 io.netty.handler.codec.http.multipart.MemoryFileUpload.touch(MemoryFileUpload.java:185) 11:52:39 io.netty.handler.codec.http.multipart.MemoryFileUpload.touch(MemoryFileUpload.java:32) 11:52:39 io.netty.handler.codec.http.multipart.AbstractMemoryHttpData.touch(AbstractMemoryHttpData.java:293) 11:52:39 io.netty.handler.codec.http.multipart.MemoryFileUpload.touch(MemoryFileUpload.java:179) 11:52:39 io.netty.handler.codec.http.multipart.MemoryFileUpload.touch(MemoryFileUpload.java:32) 11:52:39 io.micronaut.http.server.netty.FormDataHttpContentProcessor.onData(FormDataHttpContentProcessor.java:162) 11:52:39 io.micronaut.http.server.netty.AbstractHttpContentProcessor.doOnNext(AbstractHttpContentProcessor.java:79) 11:52:39 io.micronaut.http.server.netty.AbstractHttpContentProcessor.doOnNext(AbstractHttpContentProcessor.java:36) 11:52:39 io.micronaut.core.async.subscriber.CompletionAwareSubscriber.onNext(CompletionAwareSubscriber.java:56) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher.publishMessage(HandlerPublisher.java:393) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher.flushBuffer(HandlerPublisher.java:470) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher.publishMessageLater(HandlerPublisher.java:360) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher.channelRead(HandlerPublisher.java:323) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) 11:52:39 io.micronaut.http.netty.stream.HttpStreamsHandler.handleReadHttpContent(HttpStreamsHandler.java:317) 11:52:39 io.micronaut.http.netty.stream.HttpStreamsHandler.channelRead(HttpStreamsHandler.java:283) 11:52:39 io.micronaut.http.netty.stream.HttpStreamsServerHandler.channelRead(HttpStreamsServerHandler.java:134) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) 11:52:39 io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93) 11:52:39 io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:87) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) 11:52:39 io.netty.handler.codec.http.HttpContentDecoder.decode(HttpContentDecoder.java:170) 11:52:39 io.netty.handler.codec.http.HttpContentDecoder.decode(HttpContentDecoder.java:48) 11:52:39 io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:91) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356) 11:52:39 io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107) 11:52:39 io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:120) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) 11:52:39 io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93) 11:52:39 io.netty.handler.codec.http.HttpServerKeepAliveHandler.channelRead(HttpServerKeepAliveHandler.java:64) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) 11:52:39 io.netty.handler.flow.FlowControlHandler.dequeue(FlowControlHandler.java:201) 11:52:39 io.netty.handler.flow.FlowControlHandler.read(FlowControlHandler.java:138) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.read(AbstractChannelHandlerContext.java:725) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher.requestDemand(HandlerPublisher.java:165) 11:52:39 io.micronaut.http.netty.stream.HttpStreamsHandler$2.requestDemand(HttpStreamsHandler.java:274) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher$ChannelSubscription.receivedDemand(HandlerPublisher.java:556) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher$ChannelSubscription.lambda$request$0(HandlerPublisher.java:494) 11:52:39 io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148) 11:52:39 io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141) 11:52:39 io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535) 11:52:39 io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:201) 11:52:39 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1193) 11:52:39 io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 11:52:39 io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 11:52:39 11:52:39 java.base/java.lang.Thread.run(Thread.java:833) 11:52:39 Created at: 11:52:39 > Task :ignite-compute:integrationTest 11:52:39 io.netty.buffer.AdaptiveByteBufAllocator.newDirectBuffer(AdaptiveByteBufAllocator.java:67) 11:52:39 io.netty.buffer.UnsafeByteBufUtil.copy(UnsafeByteBufUtil.java:454) 11:52:39 io.netty.buffer.UnpooledUnsafeDirectByteBuf.copy(UnpooledUnsafeDirectByteBuf.java:291) 11:52:39 io.netty.buffer.AdaptivePoolingAllocator$AdaptiveByteBuf.copy(AdaptivePoolingAllocator.java:1641) 11:52:39 io.netty.buffer.WrappedByteBuf.copy(WrappedByteBuf.java:892) 11:52:39 io.netty.buffer.AdvancedLeakAwareByteBuf.copy(AdvancedLeakAwareByteBuf.java:708) 11:52:39 io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.loadDataMultipartOptimized(HttpPostMultipartRequestDecoder.java:1252) 11:52:39 io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.getFileUpload(HttpPostMultipartRequestDecoder.java:955) 11:52:39 io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.decodeMultipart(HttpPostMultipartRequestDecoder.java:609) 11:52:39 io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.findMultipartDisposition(HttpPostMultipartRequestDecoder.java:834) 11:52:39 io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.decodeMultipart(HttpPostMultipartRequestDecoder.java:554) 11:52:39 io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.findMultipartDelimiter(HttpPostMultipartRequestDecoder.java:700) 11:52:39 io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.decodeMultipart(HttpPostMultipartRequestDecoder.java:541) 11:52:39 io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.parseBodyMultipart(HttpPostMultipartRequestDecoder.java:506) 11:52:39 io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.parseBody(HttpPostMultipartRequestDecoder.java:472) 11:52:39 io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.offer(HttpPostMultipartRequestDecoder.java:384) 11:52:39 io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.offer(HttpPostMultipartRequestDecoder.java:55) 11:52:39 io.micronaut.http.server.netty.FormDataHttpContentProcessor.onData(FormDataHttpContentProcessor.java:158) 11:52:39 io.micronaut.http.server.netty.AbstractHttpContentProcessor.doOnNext(AbstractHttpContentProcessor.java:79) 11:52:39 io.micronaut.http.server.netty.AbstractHttpContentProcessor.doOnNext(AbstractHttpContentProcessor.java:36) 11:52:39 io.micronaut.core.async.subscriber.CompletionAwareSubscriber.onNext(CompletionAwareSubscriber.java:56) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher.publishMessage(HandlerPublisher.java:393) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher.flushBuffer(HandlerPublisher.java:470) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher.publishMessageLater(HandlerPublisher.java:360) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher.channelRead(HandlerPublisher.java:323) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) 11:52:39 io.micronaut.http.netty.stream.HttpStreamsHandler.handleReadHttpContent(HttpStreamsHandler.java:317) 11:52:39 io.micronaut.http.netty.stream.HttpStreamsHandler.channelRead(HttpStreamsHandler.java:283) 11:52:39 io.micronaut.http.netty.stream.HttpStreamsServerHandler.channelRead(HttpStreamsServerHandler.java:134) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) 11:52:39 io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93) 11:52:39 io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:87) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) 11:52:39 io.netty.handler.codec.http.HttpContentDecoder.decode(HttpContentDecoder.java:170) 11:52:39 io.netty.handler.codec.http.HttpContentDecoder.decode(HttpContentDecoder.java:48) 11:52:39 io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:91) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356) 11:52:39 io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107) 11:52:39 io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:120) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) 11:52:39 io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93) 11:52:39 io.netty.handler.codec.http.HttpServerKeepAliveHandler.channelRead(HttpServerKeepAliveHandler.java:64) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) 11:52:39 io.netty.handler.flow.FlowControlHandler.dequeue(FlowControlHandler.java:201) 11:52:39 io.netty.handler.flow.FlowControlHandler.read(FlowControlHandler.java:138) 11:52:39 io.netty.channel.AbstractChannelHandlerContext.read(AbstractChannelHandlerContext.java:725) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher.requestDemand(HandlerPublisher.java:165) 11:52:39 io.micronaut.http.netty.stream.HttpStreamsHandler$2.requestDemand(HttpStreamsHandler.java:274) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher$ChannelSubscription.receivedDemand(HandlerPublisher.java:556) 11:52:39 io.micronaut.http.netty.reactive.HandlerPublisher$ChannelSubscription.lambda$request$0(HandlerPublisher.java:494) 11:52:39 io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148) 11:52:39 io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141) 11:52:39 io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535) 11:52:39 io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:201) 11:52:39 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1193) 11:52:39 io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 11:52:39 io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 11:52:39 java.base/java.lang.Thread.run(Thread.java:833) {code} was: *CompletedFileUploadSubscriber* releases accumulated buffers only on successful completion. If there is an exception and *result* future is in failed state, we never release accumulated buffers. It might be better to save the buffers to temp files to avoid hogging Netty buffers and keeping the entire upload in memory. > Netty buffer leaks in CompletedFileUploadSubscriber > --------------------------------------------------- > > Key: IGNITE-26418 > URL: https://issues.apache.org/jira/browse/IGNITE-26418 > Project: Ignite > Issue Type: Bug > Components: rest ai3 > Reporter: Pavel Tupitsyn > Priority: Blocker > Labels: ignite-3 > Fix For: 3.1 > > > *CompletedFileUploadSubscriber* releases accumulated buffers only on > successful completion. If there is an exception and *result* future is in > failed state, we never release accumulated buffers. > It might be better to save the buffers to temp files to avoid hogging Netty > buffers and keeping the entire upload in memory. > {code} > [2025-09-11T11:52:39,799][ERROR][iect_n_3345-network-worker-1][ResourceLeakDetector] > LEAK: ByteBuf.release() was not called before it's garbage-collected. See > https://netty.io/wiki/reference-counted-objects.html for more information. > 11:52:39 Recent access records: > 11:52:39 #1: > 11:52:39 > io.netty.handler.codec.http.multipart.AbstractMemoryHttpData.touch(AbstractMemoryHttpData.java:299) > 11:52:39 > io.netty.handler.codec.http.multipart.MemoryFileUpload.touch(MemoryFileUpload.java:185) > 11:52:39 > io.netty.handler.codec.http.multipart.MemoryFileUpload.touch(MemoryFileUpload.java:32) > 11:52:39 > io.netty.handler.codec.http.multipart.AbstractMemoryHttpData.touch(AbstractMemoryHttpData.java:293) > 11:52:39 > io.netty.handler.codec.http.multipart.MemoryFileUpload.touch(MemoryFileUpload.java:179) > 11:52:39 > io.netty.handler.codec.http.multipart.MemoryFileUpload.touch(MemoryFileUpload.java:32) > 11:52:39 > io.micronaut.http.server.netty.FormDataHttpContentProcessor.onData(FormDataHttpContentProcessor.java:162) > 11:52:39 > io.micronaut.http.server.netty.AbstractHttpContentProcessor.doOnNext(AbstractHttpContentProcessor.java:79) > 11:52:39 > io.micronaut.http.server.netty.AbstractHttpContentProcessor.doOnNext(AbstractHttpContentProcessor.java:36) > 11:52:39 > io.micronaut.core.async.subscriber.CompletionAwareSubscriber.onNext(CompletionAwareSubscriber.java:56) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher.publishMessage(HandlerPublisher.java:393) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher.flushBuffer(HandlerPublisher.java:470) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher.publishMessageLater(HandlerPublisher.java:360) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher.channelRead(HandlerPublisher.java:323) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) > 11:52:39 > io.micronaut.http.netty.stream.HttpStreamsHandler.handleReadHttpContent(HttpStreamsHandler.java:317) > 11:52:39 > io.micronaut.http.netty.stream.HttpStreamsHandler.channelRead(HttpStreamsHandler.java:283) > 11:52:39 > io.micronaut.http.netty.stream.HttpStreamsServerHandler.channelRead(HttpStreamsServerHandler.java:134) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) > 11:52:39 > io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93) > 11:52:39 > io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:87) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) > 11:52:39 > io.netty.handler.codec.http.HttpContentDecoder.decode(HttpContentDecoder.java:170) > 11:52:39 > io.netty.handler.codec.http.HttpContentDecoder.decode(HttpContentDecoder.java:48) > 11:52:39 > io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:91) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356) > 11:52:39 > io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107) > 11:52:39 > io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:120) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) > 11:52:39 > io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93) > 11:52:39 > io.netty.handler.codec.http.HttpServerKeepAliveHandler.channelRead(HttpServerKeepAliveHandler.java:64) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) > 11:52:39 > io.netty.handler.flow.FlowControlHandler.dequeue(FlowControlHandler.java:201) > 11:52:39 > io.netty.handler.flow.FlowControlHandler.read(FlowControlHandler.java:138) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.read(AbstractChannelHandlerContext.java:725) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher.requestDemand(HandlerPublisher.java:165) > 11:52:39 > io.micronaut.http.netty.stream.HttpStreamsHandler$2.requestDemand(HttpStreamsHandler.java:274) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher$ChannelSubscription.receivedDemand(HandlerPublisher.java:556) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher$ChannelSubscription.lambda$request$0(HandlerPublisher.java:494) > 11:52:39 > io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148) > 11:52:39 > io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141) > 11:52:39 > io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535) > 11:52:39 > io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:201) > 11:52:39 > io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1193) > 11:52:39 > io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) > 11:52:39 > io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) > 11:52:39 > 11:52:39 java.base/java.lang.Thread.run(Thread.java:833) > 11:52:39 Created at: > 11:52:39 > Task :ignite-compute:integrationTest > 11:52:39 > io.netty.buffer.AdaptiveByteBufAllocator.newDirectBuffer(AdaptiveByteBufAllocator.java:67) > 11:52:39 > io.netty.buffer.UnsafeByteBufUtil.copy(UnsafeByteBufUtil.java:454) > 11:52:39 > io.netty.buffer.UnpooledUnsafeDirectByteBuf.copy(UnpooledUnsafeDirectByteBuf.java:291) > 11:52:39 > io.netty.buffer.AdaptivePoolingAllocator$AdaptiveByteBuf.copy(AdaptivePoolingAllocator.java:1641) > 11:52:39 io.netty.buffer.WrappedByteBuf.copy(WrappedByteBuf.java:892) > 11:52:39 > io.netty.buffer.AdvancedLeakAwareByteBuf.copy(AdvancedLeakAwareByteBuf.java:708) > 11:52:39 > io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.loadDataMultipartOptimized(HttpPostMultipartRequestDecoder.java:1252) > 11:52:39 > io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.getFileUpload(HttpPostMultipartRequestDecoder.java:955) > 11:52:39 > io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.decodeMultipart(HttpPostMultipartRequestDecoder.java:609) > 11:52:39 > io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.findMultipartDisposition(HttpPostMultipartRequestDecoder.java:834) > 11:52:39 > io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.decodeMultipart(HttpPostMultipartRequestDecoder.java:554) > 11:52:39 > io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.findMultipartDelimiter(HttpPostMultipartRequestDecoder.java:700) > 11:52:39 > io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.decodeMultipart(HttpPostMultipartRequestDecoder.java:541) > 11:52:39 > io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.parseBodyMultipart(HttpPostMultipartRequestDecoder.java:506) > 11:52:39 > io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.parseBody(HttpPostMultipartRequestDecoder.java:472) > 11:52:39 > io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.offer(HttpPostMultipartRequestDecoder.java:384) > 11:52:39 > io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.offer(HttpPostMultipartRequestDecoder.java:55) > 11:52:39 > io.micronaut.http.server.netty.FormDataHttpContentProcessor.onData(FormDataHttpContentProcessor.java:158) > 11:52:39 > io.micronaut.http.server.netty.AbstractHttpContentProcessor.doOnNext(AbstractHttpContentProcessor.java:79) > 11:52:39 > io.micronaut.http.server.netty.AbstractHttpContentProcessor.doOnNext(AbstractHttpContentProcessor.java:36) > 11:52:39 > io.micronaut.core.async.subscriber.CompletionAwareSubscriber.onNext(CompletionAwareSubscriber.java:56) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher.publishMessage(HandlerPublisher.java:393) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher.flushBuffer(HandlerPublisher.java:470) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher.publishMessageLater(HandlerPublisher.java:360) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher.channelRead(HandlerPublisher.java:323) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) > 11:52:39 > io.micronaut.http.netty.stream.HttpStreamsHandler.handleReadHttpContent(HttpStreamsHandler.java:317) > 11:52:39 > io.micronaut.http.netty.stream.HttpStreamsHandler.channelRead(HttpStreamsHandler.java:283) > 11:52:39 > io.micronaut.http.netty.stream.HttpStreamsServerHandler.channelRead(HttpStreamsServerHandler.java:134) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) > 11:52:39 > io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93) > 11:52:39 > io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:87) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) > 11:52:39 > io.netty.handler.codec.http.HttpContentDecoder.decode(HttpContentDecoder.java:170) > 11:52:39 > io.netty.handler.codec.http.HttpContentDecoder.decode(HttpContentDecoder.java:48) > 11:52:39 > io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:91) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356) > 11:52:39 > io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107) > 11:52:39 > io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:120) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) > 11:52:39 > io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93) > 11:52:39 > io.netty.handler.codec.http.HttpServerKeepAliveHandler.channelRead(HttpServerKeepAliveHandler.java:64) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:354) > 11:52:39 > io.netty.handler.flow.FlowControlHandler.dequeue(FlowControlHandler.java:201) > 11:52:39 > io.netty.handler.flow.FlowControlHandler.read(FlowControlHandler.java:138) > 11:52:39 > io.netty.channel.AbstractChannelHandlerContext.read(AbstractChannelHandlerContext.java:725) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher.requestDemand(HandlerPublisher.java:165) > 11:52:39 > io.micronaut.http.netty.stream.HttpStreamsHandler$2.requestDemand(HttpStreamsHandler.java:274) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher$ChannelSubscription.receivedDemand(HandlerPublisher.java:556) > 11:52:39 > io.micronaut.http.netty.reactive.HandlerPublisher$ChannelSubscription.lambda$request$0(HandlerPublisher.java:494) > 11:52:39 > io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148) > 11:52:39 > io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141) > 11:52:39 > io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535) > 11:52:39 > io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:201) > 11:52:39 > io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1193) > 11:52:39 > io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) > 11:52:39 > io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) > 11:52:39 java.base/java.lang.Thread.run(Thread.java:833) > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)