When frame compression is enabled, the FrameCompressor#decompress makes a copy of the original frame before it gets passed to Message.ProtocolDecoder.
Therefore the body of the original frame is never released, which causes a leak. This is easily reproduced by running a test with compression enabled and the flag -Dio.netty.leakDetectionLevel=PARANOID.
And this also happened for compression btw.
Executed a sustained 12/hr test with LZ4 compression with io.netty.leakDetectionLevel=advanced. Did not observe any leak messages like the ones present prior to this change. Looks good to me!