Hi , i am using Camel Main to start Camel as standalone process. I have a route defined in a YAML file. The route uses netty TCP to open a port and listen for requests. When i send request to this camel route using an NIO Client, i am receiving the response. On The camel side i see a netty exception about Illegal Reference count. i also notice that the netty consumer has written the data as per the below log message, but this is not being sent to the NIO Client, i get the exception after the below message.
thread #4 - NettyConsumerExecutorGroup];1;DEBUG;org.apache.camel.component.netty.NettyConsumer;Channel: [id: 0xc4e2b69a, L:/127.0.0.1:1234 - R:/127.0.0.1:53872] writing body: PooledUnsafeDirectByteBuf(ridx: 0, widx: 19, cap: 2048) I would greatly appreciate it if you could provide any insights into what is going wrong here. route snippet is as below: - route: id: route-2561 from: id: from-3554 uri: netty parameters: host: 127.0.0.1 port: "1234" protocol: tcp allowDefaultCodec: false reuseChannel: true #decoders: "#messageDecoder" exchangePattern: InOut noReplyLogLevel: TRACE steps: - log: id: log-7667 message: called? ${body} Exception Trace: NettyServerTCPWorker];1;WARN ;io.netty.util.ReferenceCountUtil;Failed to release a message: PooledUnsafeDirectByteBuf(freed) io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1 at io.netty.util.internal.ReferenceCountUpdater.toLiveRealRefCnt(ReferenceCountUpdater.java:83) ~[netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.internal.ReferenceCountUpdater.release(ReferenceCountUpdater.java:148) ~[netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.buffer.AbstractReferenceCountedByteBuf.release(AbstractReferenceCountedByteBuf.java:101) ~[netty-buffer-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:90) ~[netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.ReferenceCountUtil.safeRelease(ReferenceCountUtil.java:116) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.ChannelOutboundBuffer.remove0(ChannelOutboundBuffer.java:317) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.ChannelOutboundBuffer.failFlushed(ChannelOutboundBuffer.java:671) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.closeOutboundBufferForShutdown(AbstractChannel.java:672) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.shutdownOutput(AbstractChannel.java:666) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.handleWriteError(AbstractChannel.java:953) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:933) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:895) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:921) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:941) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannelHandlerContext$WriteTask.run(AbstractChannelHandlerContext.java:1247) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.94.Final.jar:4.1.94.Final] at java.lang.Thread.run(Thread.java:837) [?:?] [Camel Thread #3 - NettyServerTCPWorker];1;WARN ;org.apache.camel.component.netty.NettyConsumer;Caused by: [org.apache.camel.CamelExchangeException - Cannot write response to / 127.0.0.1:53872. Exchange[]. Caused by: [io.netty.channel.socket.ChannelOutputShutdownException - Channel output shutdown]] org.apache.camel.CamelExchangeException: Cannot write response to / 127.0.0.1:53872. Exchange[]. Caused by: [io.netty.channel.socket.ChannelOutputShutdownException - Channel output shutdown] at org.apache.camel.component.netty.handlers.ServerResponseFutureListener.operationComplete(ServerResponseFutureListener.java:53) [camel-netty-4.0.0.jar:4.0.0] at org.apache.camel.component.netty.handlers.ServerResponseFutureListener.operationComplete(ServerResponseFutureListener.java:35) [camel-netty-4.0.0.jar:4.0.0] at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.internal.PromiseNotificationUtil.tryFailure(PromiseNotificationUtil.java:64) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.ChannelOutboundBuffer.safeFail(ChannelOutboundBuffer.java:734) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.ChannelOutboundBuffer.remove0(ChannelOutboundBuffer.java:319) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.ChannelOutboundBuffer.failFlushed(ChannelOutboundBuffer.java:671) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.closeOutboundBufferForShutdown(AbstractChannel.java:672) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.shutdownOutput(AbstractChannel.java:666) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.handleWriteError(AbstractChannel.java:953) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:933) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:895) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:921) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:941) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannelHandlerContext$WriteTask.run(AbstractChannelHandlerContext.java:1247) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) [netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.94.Final.jar:4.1.94.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.94.Final.jar:4.1.94.Final] at java.lang.Thread.run(Thread.java:837) [?:?] Caused by: io.netty.channel.socket.ChannelOutputShutdownException: Channel output shutdown at io.netty.channel.AbstractChannel$AbstractUnsafe.shutdownOutput(AbstractChannel.java:650) ~[netty-transport-4.1.94.Final.jar:4.1.94.Final] ... 15 more Caused by: java.lang.NullPointerException: Cannot invoke "java.nio.ByteBuffer.duplicate()" because "memory" is null at io.netty.buffer.PooledUnsafeDirectByteBuf.newInternalNioBuffer(PooledUnsafeDirectByteBuf.java:69) ~[netty-buffer-4.1.94.Final.jar:4.1.94.Final] at io.netty.buffer.PooledUnsafeDirectByteBuf.newInternalNioBuffer(PooledUnsafeDirectByteBuf.java:29) ~[netty-buffer-4.1.94.Final.jar:4.1.94.Final] at io.netty.buffer.PooledByteBuf.internalNioBuffer(PooledByteBuf.java:161) ~[netty-buffer-4.1.94.Final.jar:4.1.94.Final] at io.netty.buffer.PooledByteBuf._internalNioBuffer(PooledByteBuf.java:191) ~[netty-buffer-4.1.94.Final.jar:4.1.94.Final] at io.netty.buffer.PooledByteBuf.internalNioBuffer(PooledByteBuf.java:204) ~[netty-buffer-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.ChannelOutboundBuffer.nioBuffers(ChannelOutboundBuffer.java:458) ~[netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.socket.nio.NioSocketChannel.doWrite(NioSocketChannel.java:399) ~[netty-transport-4.1.94.Final.jar:4.1.94.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:931) ~[netty-transport-4.1.94.Final.jar:4.1.94.Final] ... 13 more -- Regards, Rohan Emmanuel