You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Jan Van Besien (JIRA)" <ji...@apache.org> on 2013/10/31 15:07:17 UTC

[jira] [Created] (AVRO-1391) NettyTransceiver await called in IO thread

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)