You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Yiannis Mavroukakis <im...@gameaccountnetwork.com> on 2010/12/13 12:14:21 UTC

Exception from camel-netty on first use

Hello everyone,

I've got a situation where I encounter an exception from the netty producer
when it gets used right after Camel has started up.
This happens once and once only, afterwards everything is fine. The
exception I am getting is:

2010-12-12 00:59:15,856 14232 INFO  [main]
[org.apache.camel.impl.DefaultCamelContext] (main:) Apache Camel 2.5.0
(CamelContext: camel) started in 6.282 seconds
2010-12-12 00:59:15,861 14237 INFO  [main]
[org.springframework.web.context.ContextLoader] (main:) Root
WebApplicationContext: initialization completed in 14235 ms
2010-12-12 01:00:12,596 70972 WARN  [New I/O server worker #2-1]
[org.apache.camel.component.netty.handlers.ServerChannelHandler] (New I/O
server worker #2-1:) Closing channel as an exception was thrown from N
etty
java.io.IOException: Broken pipe
        at sun.nio.ch.FileDispatcher.write0(Native Method)[:1.6.0_21]
        at
sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29)[:1.6.0_21]
        at
sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:100)[:1.6.0_21]
        at sun.nio.ch.IOUtil.write(IOUtil.java:56)[:1.6.0_21]
        at
sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:334)[:1.6.0_21]
        at
org.jboss.netty.channel.socket.nio.SocketSendBufferPool$PooledSendBuffer.transferTo(SocketSendBufferPool.java:243)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.socket.nio.NioWorker.write0(NioWorker.java:470)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.socket.nio.NioWorker.writeFromUserCode(NioWorker.java:388)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:137)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.Channels.write(Channels.java:632)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:70)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.Channels.write(Channels.java:611)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.Channels.write(Channels.java:578)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:259)[netty-3.2.2.Final.jar:]
        at
org.apache.camel.component.netty.NettyHelper.writeBodySync(NettyHelper.java:95)[camel-netty-2.5.0.jar:2.5.0]
        at
org.apache.camel.component.netty.handlers.ServerChannelHandler.sendResponse(ServerChannelHandler.java:147)[camel-netty-2.5.0.jar:2.5.0]
        at
org.apache.camel.component.netty.handlers.ServerChannelHandler.messageReceived(ServerChannelHandler.java:104)[camel-netty-2.5.0.jar:2.5.0]
        at
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:76)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:317)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:299)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:216)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)[netty-3.2.2.Final.jar:]
       at
org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:350)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:281)[netty-3.2.2.Final.jar:]
       at
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:201)[netty-3.2.2.Final.jar:]
        at
org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)[netty-3.2.2.Final.jar:]
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_21]
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_21]
        at java.lang.Thread.run(Thread.java:619)[:1.6.0_21]


2010-12-12 01:00:12,625 71001 WARN  [New I/O server worker #2-1]
[org.apache.camel.component.netty.NettyHelper] (New I/O server worker #2-1:)
Cannot write body: 0^@ using channel: [id: 0x7821f270, /172.17.0.11
:49767 :> /10.3.3.25:5156]


My netty configuration and route setup

   <!-- Netty Producer Setup -->

<bean id="nullDelimiter" class=
"org.jboss.netty.handler.codec.frame.Delimiters"

 factory-method="nulDelimiter" />

<bean id="stringencoder" class=
"org.jboss.netty.handler.codec.string.StringEncoder" />

<util:list id="decoders" list-class="java.util.LinkedList">

 <bean id="delim-decoder"

 class="org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder">

 <constructor-arg value="10240" />

 <constructor-arg ref="nullDelimiter" />

 </bean>

 <bean class="org.jboss.netty.handler.codec.string.StringDecoder" />

</util:list>

   <route>

 <from

  uri="netty:tcp://
0.0.0.0:5155?decoders=#decoders&amp;encoders=#stringencoder" />

 <wireTap uri="bean:partnerRoute" />

 <transform>

  <constant>0</constant>

 </transform>

 </route>

 <route>

 <from

  uri="netty:tcp://
0.0.0.0:5156?textline=true&amp;delimiter=NULL&amp;encoding=UTF8" />

 <wireTap uri="bean:partnerRoute" />

 <transform>

  <constant>0</constant>

 </transform>

 </route>



Is this something that is at my end, or have I hit a bug?


Thanks,

Yiannis

Re: Exception from camel-netty on first use

Posted by Yiannis Mavroukakis <im...@gameaccountnetwork.com>.
Just a little extra info on this, would this have anything to do with the
fact that the beans might not be deployed at the time Netty tries to
transfer the body?

Thanks,

Yiannis

On 13 December 2010 11:14, Yiannis Mavroukakis <
imavroukakis@gameaccountnetwork.com> wrote:

> Hello everyone,
>
> I've got a situation where I encounter an exception from the netty producer
> when it gets used right after Camel has started up.
> This happens once and once only, afterwards everything is fine. The
> exception I am getting is:
>
> 2010-12-12 00:59:15,856 14232 INFO  [main]
> [org.apache.camel.impl.DefaultCamelContext] (main:) Apache Camel 2.5.0
> (CamelContext: camel) started in 6.282 seconds
> 2010-12-12 00:59:15,861 14237 INFO  [main]
> [org.springframework.web.context.ContextLoader] (main:) Root
> WebApplicationContext: initialization completed in 14235 ms
> 2010-12-12 01:00:12,596 70972 WARN  [New I/O server worker #2-1]
> [org.apache.camel.component.netty.handlers.ServerChannelHandler] (New I/O
> server worker #2-1:) Closing channel as an exception was thrown from N
>  etty
> java.io.IOException: Broken pipe
>         at sun.nio.ch.FileDispatcher.write0(Native Method)[:1.6.0_21]
>         at
> sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29)[:1.6.0_21]
>         at
> sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:100)[:1.6.0_21]
>         at sun.nio.ch.IOUtil.write(IOUtil.java:56)[:1.6.0_21]
>         at
> sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:334)[:1.6.0_21]
>         at
> org.jboss.netty.channel.socket.nio.SocketSendBufferPool$PooledSendBuffer.transferTo(SocketSendBufferPool.java:243)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.socket.nio.NioWorker.write0(NioWorker.java:470)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.socket.nio.NioWorker.writeFromUserCode(NioWorker.java:388)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:137)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.Channels.write(Channels.java:632)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:70)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.Channels.write(Channels.java:611)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.Channels.write(Channels.java:578)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:259)[netty-3.2.2.Final.jar:]
>          at
> org.apache.camel.component.netty.NettyHelper.writeBodySync(NettyHelper.java:95)[camel-netty-2.5.0.jar:2.5.0]
>         at
> org.apache.camel.component.netty.handlers.ServerChannelHandler.sendResponse(ServerChannelHandler.java:147)[camel-netty-2.5.0.jar:2.5.0]
>         at
> org.apache.camel.component.netty.handlers.ServerChannelHandler.messageReceived(ServerChannelHandler.java:104)[camel-netty-2.5.0.jar:2.5.0]
>         at
> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:76)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:317)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:299)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:216)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)[netty-3.2.2.Final.jar:]
>        at
> org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:350)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:281)[netty-3.2.2.Final.jar:]
>        at
> org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:201)[netty-3.2.2.Final.jar:]
>         at
> org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)[netty-3.2.2.Final.jar:]
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_21]
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_21]
>         at java.lang.Thread.run(Thread.java:619)[:1.6.0_21]
>
>
> 2010-12-12 01:00:12,625 71001 WARN  [New I/O server worker #2-1]
> [org.apache.camel.component.netty.NettyHelper] (New I/O server worker #2-1:)
> Cannot write body: 0^@ using channel: [id: 0x7821f270, /172.17.0.11
> :49767 :> /10.3.3.25:5156]
>
>
> My netty configuration and route setup
>
> <!-- Netty Producer Setup -->
>
> <bean id="nullDelimiter" class=
> "org.jboss.netty.handler.codec.frame.Delimiters"
>
>  factory-method="nulDelimiter" />
>
> <bean id="stringencoder" class=
> "org.jboss.netty.handler.codec.string.StringEncoder" />
>
> <util:list id="decoders" list-class="java.util.LinkedList">
>
>  <bean id="delim-decoder"
>
>  class="org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder">
>
>  <constructor-arg value="10240" />
>
>  <constructor-arg ref="nullDelimiter" />
>
>  </bean>
>
>  <bean class="org.jboss.netty.handler.codec.string.StringDecoder" />
>
> </util:list>
>
> <route>
>
>  <from
>
>   uri="netty:tcp://
> 0.0.0.0:5155?decoders=#decoders&amp;encoders=#stringencoder<http://0.0.0.0:5155?decoders=#decoders&encoders=%23stringencoder>
> " />
>
>  <wireTap uri="bean:partnerRoute" />
>
>  <transform>
>
>   <constant>0</constant>
>
>  </transform>
>
>  </route>
>
>  <route>
>
>  <from
>
>   uri="netty:tcp://
> 0.0.0.0:5156?textline=true&amp;delimiter=NULL&amp;encoding=UTF8<http://0.0.0.0:5156?textline=true&delimiter=NULL&encoding=UTF8>
> " />
>
>  <wireTap uri="bean:partnerRoute" />
>
>  <transform>
>
>   <constant>0</constant>
>
>  </transform>
>
>  </route>
>
>
>
> Is this something that is at my end, or have I hit a bug?
>
>
> Thanks,
>
> Yiannis
>