Open
Description
The context
Running in production, we occasionally (once every 4-8 weeks) we see this error being logged
LEAK: ByteBuf.release() was not called before it's garbage-collected.
The bug
There is no observable misbehavior, as this is just a warning issued when GCing.
Stacktrace and logs
error - io.grpc.netty.shaded.io.netty.util.ResourceLeakDetector: 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: Created at:
io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:402)
io.grpc.netty.shaded.io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:188)
io.grpc.netty.shaded.io.netty.buffer.AbstractByteBufAllocator.buffer(AbstractByteBufAllocator.java:124)
io.grpc.netty.shaded.io.grpc.netty.NettyWritableBufferAllocator.allocate(NettyWritableBufferAllocator.java:51)
io.grpc.internal.MessageFramer.writeBufferChain(MessageFramer.java:246)
io.grpc.internal.MessageFramer.writeCompressed(MessageFramer.java:198)
io.grpc.internal.MessageFramer.writePayload(MessageFramer.java:141)
io.grpc.internal.AbstractStream.writeMessage(AbstractStream.java:66)
io.grpc.internal.ServerCallImpl.sendMessageInternal(ServerCallImpl.java:168)
io.grpc.internal.ServerCallImpl.sendMessage(ServerCallImpl.java:152)
io.grpc.ForwardingServerCall.sendMessage(ForwardingServerCall.java:32)
io.opentelemetry.javaagent.shaded.instrumentation.grpc.v1_6.TracingServerInterceptor.sendMessage(TracingServerInterceptor.java:107)
io.grpc.ForwardingServerCall.sendMessage(ForwardingServerCall.java:32)
io.micrometer.core.instrument.binder.grpc.MetricCollectingServerCall.sendMessage(MetricCollectingServerCall.java:63)
io.grpc.ForwardingServerCall.sendMessage(ForwardingServerCall.java:32)
io.micrometer.core.instrument.binder.grpc.ObservationGrpcServerCall.sendMessage(ObservationGrpcServerCall.java:56)
io.grpc.stub.ServerCalls.onNext(ServerCalls.java:380)
Steps to Reproduce
no idea.
The application's environment
Which versions do you use?
- Spring (boot): 3.4.x
- grpc-java: 1.63.0
- grpc-spring-boot-starter: 3.1.0.RELEASE
- java: corretto 21 (several versions) on x86-64
Additional context
We're using a trivial LZ4 codec, just wrapping the streams into respective LZ4 Streams. Probably not interesting.