[ 
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)

Reply via email to