You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Rob Godfrey (JIRA)" <qp...@incubator.apache.org> on 2007/05/08 00:22:15 UTC

[jira] Resolved: (QPID-480) Deadlock in Java Broker

     [ https://issues.apache.org/jira/browse/QPID-480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rob Godfrey resolved QPID-480.
------------------------------

    Resolution: Fixed

Completed: At revision: 536008  


> Deadlock in Java Broker
> -----------------------
>
>                 Key: QPID-480
>                 URL: https://issues.apache.org/jira/browse/QPID-480
>             Project: Qpid
>          Issue Type: Bug
>    Affects Versions: M2
>            Reporter: Rob Godfrey
>         Assigned To: Rob Godfrey
>            Priority: Critical
>             Fix For: M2
>
>
> A deadlock can occur when unsuspending after a QoS caused suspension:
> Found one Java-level deadlock:
> =============================
> "pool-2-thread-2":
>   waiting to lock monitor 0x00002aab7638af58 (object 0x00002aaab458d8a8, a java.lang.Object),
>   which is held by "pool-2-thread-1"
> "pool-2-thread-1":
>   waiting for ownable synchronizer 0x00002aaab45f7008, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
>   which is held by "pool-2-thread-2"
> Java stack information for the threads listed above:
> ===================================================
> "pool-2-thread-2":
>         at org.apache.qpid.server.ack.UnacknowledgedMessageMapImpl.size(UnacknowledgedMessageMapImpl.java:157)
>         - waiting to lock <0x00002aaab458d8a8> (a java.lang.Object)
>         at org.apache.qpid.server.AMQChannel.wouldSuspend(AMQChannel.java:941)
>         at org.apache.qpid.server.queue.SubscriptionImpl.wouldSuspend(SubscriptionImpl.java:612)
>         at org.apache.qpid.server.queue.SubscriptionSet.nextSubscriberImpl(SubscriptionSet.java:152)
>         at org.apache.qpid.server.queue.SubscriptionSet.nextSubscriber(SubscriptionSet.java:129)
>         at org.apache.qpid.server.queue.ConcurrentSelectorDeliveryManager.deliver(ConcurrentSelectorDeliveryManager.java:680)
>         at org.apache.qpid.server.queue.AMQQueue.process(AMQQueue.java:596)
>         at org.apache.qpid.server.txn.NonTransactionalContext.deliver(NonTransactionalContext.java:96)
>         at org.apache.qpid.server.queue.AMQMessage.deliver(AMQMessage.java:666)
>         at org.apache.qpid.server.queue.AMQMessage.addContentBodyFrame(AMQMessage.java:344)
>         at org.apache.qpid.server.AMQChannel.publishContentBody(AMQChannel.java:245)
>         at org.apache.qpid.server.protocol.AMQMinaProtocolSession.contentBodyReceived(AMQMinaProtocolSession.java:393)
>         at org.apache.qpid.server.protocol.AMQMinaProtocolSession.frameReceived(AMQMinaProtocolSession.java:227)
>         at org.apache.qpid.server.protocol.AMQMinaProtocolSession.dataBlockReceived(AMQMinaProtocolSession.java:197)
>         at org.apache.qpid.server.protocol.AMQPFastProtocolHandler.messageReceived(AMQPFastProtocolHandler.java:207)
>         at org.apache.mina.common.support.AbstractIoFilterChain$2.messageReceived(AbstractIoFilterChain.java:189)
>         at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:502)
>         at org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:52)
>         at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:777)
>         at org.apache.qpid.pool.PoolingFilter.messageReceived(PoolingFilter.java:136)
>         at org.apache.mina.filter.ReferenceCountingIoFilter.messageReceived(ReferenceCountingIoFilter.java:96)
>         at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:502)
>         at org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:52)
>         at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:777)
>         at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:60)
>         at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:185)
>         at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:502)
>         at org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:52)
>         at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:777)
>         at org.apache.qpid.pool.Event$ReceivedEvent.process(Event.java:53)
>         at org.apache.qpid.pool.Job.processAll(Job.java:80)
>         at org.apache.qpid.pool.Job.run(Job.java:102)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>         at java.lang.Thread.run(Thread.java:619)
> "pool-2-thread-1":
>         at sun.misc.Unsafe.park(Native Method)
>         - parking to wait for  <0x00002aaab45f7008> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
>         at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:712)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:743)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1079)
>         at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:186)
>         at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
>         at org.apache.qpid.server.queue.ConcurrentSelectorDeliveryManager.hasQueuedMessages(ConcurrentSelectorDeliveryManager.java:139)
>         at org.apache.qpid.server.queue.ConcurrentSelectorDeliveryManager.processAsync(ConcurrentSelectorDeliveryManager.java:825)
>         at org.apache.qpid.server.queue.AMQQueue.deliverAsync(AMQQueue.java:632)
>         at org.apache.qpid.server.AMQChannel.setSuspended(AMQChannel.java:867)
>         at org.apache.qpid.server.AMQChannel.checkSuspension(AMQChannel.java:845)
>         at org.apache.qpid.server.AMQChannel.acknowledgeMessage(AMQChannel.java:819)
>         - locked <0x00002aaab458d8a8> (a java.lang.Object)
>         at org.apache.qpid.server.handler.BasicAckMethodHandler.methodReceived(BasicAckMethodHandler.java:65)
>         at org.apache.qpid.server.state.AMQStateManager.methodReceived(AMQStateManager.java:222)
>         at org.apache.qpid.server.protocol.AMQMinaProtocolSession.methodFrameReceived(AMQMinaProtocolSession.java:312)
>         at org.apache.qpid.server.protocol.AMQMinaProtocolSession.frameReceived(AMQMinaProtocolSession.java:219)
>         at org.apache.qpid.server.protocol.AMQMinaProtocolSession.dataBlockReceived(AMQMinaProtocolSession.java:197)
>         at org.apache.qpid.server.protocol.AMQPFastProtocolHandler.messageReceived(AMQPFastProtocolHandler.java:207)
>         at org.apache.mina.common.support.AbstractIoFilterChain$2.messageReceived(AbstractIoFilterChain.java:189)
>         at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:502)
>         at org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:52)
>         at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:777)
>         at org.apache.qpid.pool.PoolingFilter.messageReceived(PoolingFilter.java:136)
>         at org.apache.mina.filter.ReferenceCountingIoFilter.messageReceived(ReferenceCountingIoFilter.java:96)
>         at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:502)
>         at org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:52)
>         at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:777)
>         at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:60)
>         at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:185)
>         at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:502)
>         at org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:52)
>         at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:777)
>         at org.apache.qpid.pool.Event$ReceivedEvent.process(Event.java:53)
>         at org.apache.qpid.pool.Job.processAll(Job.java:80)
>         at org.apache.qpid.pool.Job.run(Job.java:102)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Found 1 deadlock.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.