ChannelBusyException: JBREM000207: Failed to send a message (channel is busy) in JBoss EAP 6.0.x
Issue
- We have applied the the patch to improve remote EJB performance "one-byte-at-a-time" issue (AS7-6013), and it improved the performance.
Now we are seeing ChannelBusyExceptions after running a test for a few minutes with 1000 threads calling the EJB every 4 seconds. It doesn't seem to depend on how loaded the remoting connection is; every client thread will eventually throw this exception:
java.lang.reflect.UndeclaredThrowableException
at $Proxy0.execute(Unknown Source)
at se.redhat.supportcase.netent.client.RemoteClient.execute(RemoteClient.java:60)
at main.Main$1.run(Main.java:44)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.jboss.remoting3.ChannelBusyException: JBREM000207: Failed to send a message (channel is busy)
at org.jboss.remoting3.remote.RemoteConnectionChannel.writeMessage(RemoteConnectionChannel.java:313)
at org.jboss.ejb.client.remoting.ChannelAssociation.acquireChannelMessageOutputStream(ChannelAssociation.java:249)
at org.jboss.ejb.client.remoting.RemotingConnectionEJBReceiver.processInvocation(RemotingConnectionEJBReceiver.java:196)
at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181)
at org.jboss.ejb.client.TransactionInterceptor.handleInvocation(TransactionInterceptor.java:42)
at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183)
at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:125)
at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:136)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121)
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104)
... 4 more
Environment
- JBoss Enterprise Application Platform (EAP)
- 6.0.x
- One off patch applied: bz-903990 - EAP 6.0.1 - Remote EJB invocations are read/written out one byte at a time
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.