-
Bug
-
Resolution: Done
-
Major
-
JBossAS-4.0.3 SP1
-
None
There is still a distributed deadlock in UIL2 which can be seen when the server is running slow
responding to a NACK
With the client trying to deal with a backlog of requests on the same receiver.
This occurs with the client stuck in the RunWhenBlocked action (i.e. it ran of threads in the thread pool):
at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:165)
- waiting to lock <0xffffffff2e876d88> (a java.util.LinkedList)
at org.jboss.mq.Connection.asynchDeliver(Connection.java:414)
at org.jboss.mq.il.uil2.UILClientILService.handleMsg(UILClientILService.java:100)
at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleMsg(SocketManager.java:369)
at org.jboss.mq.il.uil2.msgs.BaseMsg.run(BaseMsg.java:377)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$RunWhenBlocked.blockedAction(PooledExecutor.java:777)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor.execute(PooledExecutor.java:898)
at org.jboss.mq.il.uil2.SocketManager$ReadTask.run(SocketManager.java:309)
at java.lang.Thread.run(Thread.java:595)
And another thread doing a NACK before it hits the consumer (typically because the consumer is no longer listening).
at java.lang.Object.wait(Native Method)
- waiting on <0xffffffff2e8d6db8> (a org.jboss.mq.il.uil2.msgs.AcknowledgementRequestMsg)
at java.lang.Object.wait(Object.java:474)
at org.jboss.mq.il.uil2.SocketManager.internalSendMessage(SocketManager.java:252) - locked <0xffffffff2e8d6db8> (a org.jboss.mq.il.uil2.msgs.AcknowledgementRequestMsg)
at org.jboss.mq.il.uil2.SocketManager.sendMessage(SocketManager.java:206)
at org.jboss.mq.il.uil2.UILServerIL.acknowledge(UILServerIL.java:261)
at org.jboss.mq.Connection.send(Connection.java:1139)
at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:179) - locked <0xffffffff2e876d88> (a java.util.LinkedList)
at org.jboss.mq.Connection.asynchDeliver(Connection.java:414)
at org.jboss.mq.il.uil2.UILClientILService.handleMsg(UILClientILService.java:100)
at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleMsg(SocketManager.java:369)
at org.jboss.mq.il.uil2.msgs.BaseMsg.run(BaseMsg.java:377)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
at java.lang.Thread.run(Thread.java:595)