Jan Van Besien created AVRO-1391:
------------------------------------

             Summary: NettyTransceiver await called in IO thread
                 Key: AVRO-1391
                 URL: https://issues.apache.org/jira/browse/AVRO-1391
             Project: Avro
          Issue Type: Bug
          Components: java
    Affects Versions: 1.7.5
            Reporter: Jan Van Besien


The NettyTransceiver does a call to channelFuture.await() in the getChannel() 
method (line 271). This fails with the following exception if avro ipc is used 
from within an IO thread from another avro-ipc call.

Caused by: java.lang.IllegalStateException: await*() in I/O thread causes a 
dead lock or sudden performance drop. Use addListener() instead or call 
await*() from a different thread.
        at 
org.jboss.netty.channel.DefaultChannelFuture.checkDeadLock(DefaultChannelFuture.java:314)
        at 
org.jboss.netty.channel.DefaultChannelFuture.await0(DefaultChannelFuture.java:278)
...

The use case where I was able to reproduce this is when apache flume's avro 
source is coupled with a custom flume sink that also uses avro-ipc to talk to 
something else. In that case, the thread that ultimately does the above 
getChannel() call is an "avro io thread".



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to