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.