qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rob Godfrey (JIRA)" <qpid-...@incubator.apache.org>
Subject [jira] Created: (QPID-480) Deadlock in Java Broker
Date Mon, 07 May 2007 21:29:15 GMT
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.


Mime
View raw message