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

[Bug] LEAK: ByteBuf.release() was not called before it's garbage-collected #3467

Open
creatorone1 opened this issue Oct 9, 2024 · 5 comments
Assignees
Labels
for/user-attention This issue needs user attention (feedback, rework, etc...) status/need-feedback type/bug A general bug

Comments

@creatorone1
Copy link

when I use spring webflux. discovered a memory leak error related to ByteBuf.release() not being called before it is garbage-collected.
The error is traced to the AdvancedLeakAwareByteBuf.writeBytes method, leading to a long chain of method calls involving NettyDataBuffer, AbstractJackson2Encoder, FluxMapFuseable, and many others. The leaked memory is created at PooledByteBufAllocator.newDirectBuffer and results in a large number of write and flush operations in the event loop, ultimately affecting system performance.

Expected Behavior

no leak

Actual Behavior

LEAK: ByteBuf.release() was not called before it's garbage-collected. See https://netty.io/wiki/reference-counted-objects.html for more information.

Steps to Reproduce

sometimes,dont know why and how

2024-10-07 22:24:52.597 ERROR [-proxy-epoll-11] [ i.n.util.ResourceLeakDetector] [    reportTracedLeak] [319  ] [                                    ] LEAK: ByteBuf.release() was not called before it's garbage-collected. See https://netty.io/wiki/reference-counted-objects.html for more information.
Recent access records:
#1:
        io.netty.buffer.AdvancedLeakAwareByteBuf.writeBytes(AdvancedLeakAwareByteBuf.java:611)
        org.springframework.core.io.buffer.NettyDataBuffer.write(NettyDataBuffer.java:177)
        org.springframework.core.io.buffer.NettyDataBuffer.write(NettyDataBuffer.java:43)
        org.springframework.http.codec.json.AbstractJackson2Encoder.encodeValue(AbstractJackson2Encoder.java:241)
        org.springframework.http.codec.json.AbstractJackson2Encoder.lambda$encode$3(AbstractJackson2Encoder.java:188)
        reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113)
        reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)
        reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:129)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:230)
        reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89)
        reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:196)
        reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:268)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:196)
        reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:268)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:196)
        reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:268)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209)
        reactor.core.publisher.Operators.complete(Operators.java:137)
        reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46)
        reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onComplete(FluxContextWrite.java:126)
        reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
        reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:196)
        reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:268)
        reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277)
        reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
        reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89)
        reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:230)
        reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onComplete(FluxContextWrite.java:126)
        reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:196)
        reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:268)
        reactor.netty.FutureMono$FutureSubscription.operationComplete(FutureMono.java:196)
        io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
        io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571)
        io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550)
        io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
        io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
        io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
        io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
        io.netty.util.concurrent.PromiseCombiner.tryPromise(PromiseCombiner.java:170)
        io.netty.util.concurrent.PromiseCombiner.access$600(PromiseCombiner.java:35)
        io.netty.util.concurrent.PromiseCombiner$1.operationComplete0(PromiseCombiner.java:62)
        io.netty.util.concurrent.PromiseCombiner$1.operationComplete(PromiseCombiner.java:44)
        io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
        io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)
        io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
        io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
        io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
        io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
        io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48)
        io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:717)
        io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:272)
        io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:352)
        io.netty.channel.epoll.AbstractEpollStreamChannel.writeBytesMultiple(AbstractEpollStreamChannel.java:305)
        io.netty.channel.epoll.AbstractEpollStreamChannel.doWriteMultiple(AbstractEpollStreamChannel.java:510)
        io.netty.channel.epoll.AbstractEpollStreamChannel.doWrite(AbstractEpollStreamChannel.java:422)
        io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:931)
        io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.flush0(AbstractEpollChannel.java:557)
        io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:895)
        io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372)
        io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
        io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
        io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
        io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531)
        io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125)
        io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356)
        io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
        io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
        io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
        io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:127)
        io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
        io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:765)
        io.netty.channel.AbstractChannelHandlerContext$WriteTask.run(AbstractChannelHandlerContext.java:1071)
        io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
        io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
        io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
        io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:403)
        io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
        io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        java.lang.Thread.run(Thread.java:879)
Created at:
        io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:403)
        io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:188)
        io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:179)
        io.netty.buffer.AbstractByteBufAllocator.buffer(AbstractByteBufAllocator.java:116)
        org.springframework.core.io.buffer.NettyDataBufferFactory.allocateBuffer(NettyDataBufferFactory.java:71)
        org.springframework.core.io.buffer.NettyDataBufferFactory.allocateBuffer(NettyDataBufferFactory.java:39)
        org.springframework.http.codec.json.AbstractJackson2Encoder.encodeValue(AbstractJackson2Encoder.java:240)
        org.springframework.http.codec.json.AbstractJackson2Encoder.lambda$encode$3(AbstractJackson2Encoder.java:188)
        reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113)
        reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)
        reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:129)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:230)
        reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89)
        reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:196)
        reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:268)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:196)
        reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:268)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:196)
        reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:268)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209)
        reactor.core.publisher.Operators.complete(Operators.java:137)
        reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46)
        reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)
        reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)
        reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
        reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onComplete(FluxContextWrite.java:126)
        reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
        reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:196)
        reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:268)
        reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277)
        reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
        reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89)
        reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:230)
        reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onComplete(FluxContextWrite.java:126)
        reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:196)
        reactor.core.publisher.MonoFlatMap$FlatMapInner.onComplete(MonoFlatMap.java:268)
        reactor.netty.FutureMono$FutureSubscription.operationComplete(FutureMono.java:196)
        io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
        io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571)
        io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550)
        io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
        io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
        io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
        io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
        io.netty.util.concurrent.PromiseCombiner.tryPromise(PromiseCombiner.java:170)
        io.netty.util.concurrent.PromiseCombiner.access$600(PromiseCombiner.java:35)
        io.netty.util.concurrent.PromiseCombiner$1.operationComplete0(PromiseCombiner.java:62)
        io.netty.util.concurrent.PromiseCombiner$1.operationComplete(PromiseCombiner.java:44)
        io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
        io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)
        io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
        io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
        io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
        io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
        io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48)
        io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:717)
        io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:272)
        io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:352)
        io.netty.channel.epoll.AbstractEpollStreamChannel.writeBytesMultiple(AbstractEpollStreamChannel.java:305)
        io.netty.channel.epoll.AbstractEpollStreamChannel.doWriteMultiple(AbstractEpollStreamChannel.java:510)
        io.netty.channel.epoll.AbstractEpollStreamChannel.doWrite(AbstractEpollStreamChannel.java:422)
        io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:931)
        io.netty.util.concurrent.PromiseCombiner$1.operationComplete(PromiseCombiner.java:44)
        io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
        io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)
        io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
        io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
        io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
        io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
        io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48)
        io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:717)
        io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:272)
        io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:352)
        io.netty.channel.epoll.AbstractEpollStreamChannel.writeBytesMultiple(AbstractEpollStreamChannel.java:305)
        io.netty.channel.epoll.AbstractEpollStreamChannel.doWriteMultiple(AbstractEpollStreamChannel.java:510)
        io.netty.channel.epoll.AbstractEpollStreamChannel.doWrite(AbstractEpollStreamChannel.java:422)
        io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:931)
        io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.flush0(AbstractEpollChannel.java:557)
        io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:895)
        io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372)
        io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
        io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
        io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
        io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531)
        io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125)
        io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356)
        io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
        io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
        io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
        io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:127)
        io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
        io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:765)
        io.netty.channel.AbstractChannelHandlerContext$WriteTask.run(AbstractChannelHandlerContext.java:1071)
        io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
        io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
        io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
        io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:403)
        io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
        io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        java.lang.Thread.run(Thread.java:879)

Possible Solution

dont known

Your Environment

  • spingboot-stater-webflux:2.7.4
  • reactor-netty-http: 1.0.23
  • netty-xxx: 4.1.82.Final
  • java: 1.8
@creatorone1 creatorone1 added status/need-triage A new issue that still need to be evaluated as a whole type/bug A general bug labels Oct 9, 2024
@violetagg violetagg self-assigned this Oct 9, 2024
@violetagg violetagg added for/user-attention This issue needs user attention (feedback, rework, etc...) and removed status/need-triage A new issue that still need to be evaluated as a whole labels Oct 9, 2024
@violetagg
Copy link
Member

@creatorone1 Your Reactor Netty version is very old (reactorNettyVersion=1.0.23) and not supported anymore. Please update to a supported version (more info here)

@creatorone1
Copy link
Author

@creatorone1 Your Reactor Netty version is very old (reactorNettyVersion=1.0.23) and not supported anymore. Please update to a supported version (more info here)

thx, which version should i use?

@violetagg
Copy link
Member

@creatorone1 1.1.22 is the latest one, but I would recommend to update your Spring Boot version as fixes related to memory leaks are also done in Spring Framework

@creatorone1
Copy link
Author

@creatorone1 1.1.22 is the latest one, but I would recommend to update your Spring Boot version as fixes related to memory leaks are also done in Spring Framework

thx, when request or response body is very large(over than 5MB), This memo leak problem more likely happen.

Copy link

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
for/user-attention This issue needs user attention (feedback, rework, etc...) status/need-feedback type/bug A general bug
Projects
None yet
Development

No branches or pull requests

2 participants