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)