You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Timothy Bish (JIRA)" <ji...@apache.org> on 2016/01/11 16:22:40 UTC
[jira] [Created] (AMQ-6122) Potential Deadlock when a duplicate
message is read from the store for the DLQ destination
Timothy Bish created AMQ-6122:
---------------------------------
Summary: Potential Deadlock when a duplicate message is read from the store for the DLQ destination
Key: AMQ-6122
URL: https://issues.apache.org/jira/browse/AMQ-6122
Project: ActiveMQ
Issue Type: Bug
Components: Broker, Message Store
Affects Versions: 5.13.0
Reporter: Timothy Bish
Assignee: Timothy Bish
Priority: Critical
Fix For: 5.13.1
Potential for deadlock when duplicates read in from store for DLQ destination itself and another producer is trying to send messages from the DLQ destination.
It can result with threads in following state
{code}
Found one Java-level deadlock:
=============================
"ActiveMQ Transport: tcp:///127.0.0.1:59885@59875":
waiting for ownable synchronizer 0x00000007f6188490, (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),
which is held by "ActiveMQ BrokerService[localhost] Task-1"
"ActiveMQ BrokerService[localhost] Task-1":
waiting for ownable synchronizer 0x00000007f6190cf8, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
which is held by "ActiveMQ Transport: tcp:///127.0.0.1:59885@59875"
Java stack information for the threads listed above:
===================================================
"ActiveMQ Transport: tcp:///127.0.0.1:59885@59875":
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000007f6188490> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:964)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1282)
at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:731)
at org.apache.activemq.broker.region.Queue.toString(Queue.java:937)
at org.apache.activemq.broker.region.Queue.doMessageSend(Queue.java:830)
at org.apache.activemq.broker.region.Queue.send(Queue.java:728)
at org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:390)
at org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:455)
at org.apache.activemq.broker.jmx.ManagedRegionBroker.send(ManagedRegionBroker.java:297)
at org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:96)
at org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:307)
at org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:157)
at org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:541)
at org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:756)
at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:334)
at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:188)
at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
at org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270)
at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
at java.lang.Thread.run(Thread.java:722)
"ActiveMQ BrokerService[localhost] Task-1":
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000007f6190cf8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireInterruptibly(AbstractQueuedSynchronizer.java:894)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1221)
at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:340)
at org.apache.activemq.broker.region.Queue.doMessageSend(Queue.java:828)
at org.apache.activemq.broker.region.Queue.send(Queue.java:728)
at org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:390)
at org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:455)
at org.apache.activemq.broker.jmx.ManagedRegionBroker.send(ManagedRegionBroker.java:297)
at org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:96)
at org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:307)
at org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:157)
at org.apache.activemq.util.BrokerSupport.doResend(BrokerSupport.java:68)
at org.apache.activemq.util.BrokerSupport.resendNoCopy(BrokerSupport.java:38)
at org.apache.activemq.broker.region.RegionBroker.sendToDeadLetterQueue(RegionBroker.java:762)
at org.apache.activemq.broker.BrokerFilter.sendToDeadLetterQueue(BrokerFilter.java:318)
at org.apache.activemq.broker.BrokerFilter.sendToDeadLetterQueue(BrokerFilter.java:318)
at org.apache.activemq.broker.MutableBrokerFilter.sendToDeadLetterQueue(MutableBrokerFilter.java:330)
at org.apache.activemq.broker.region.BaseDestination.duplicateFromStore(BaseDestination.java:801)
at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.dealWithDuplicates(AbstractStoreCursor.java:134)
at org.apache.activemq.broker.region.cursors.QueueStorePrefetch.doFillBatch(QueueStorePrefetch.java:110)
at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:385)
- locked <0x00000007f6188550> (a org.apache.activemq.broker.region.cursors.QueueStorePrefetch)
at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:142)
- locked <0x00000007f6188550> (a org.apache.activemq.broker.region.cursors.QueueStorePrefetch)
at org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(StoreQueueCursor.java:159)
- locked <0x00000007f61885a8> (a org.apache.activemq.broker.region.cursors.StoreQueueCursor)
at org.apache.activemq.broker.region.Queue.doPageInForDispatch(Queue.java:1906)
at org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:2127)
at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1608)
- locked <0x00000007f61885f8> (a java.lang.Object)
at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133)
at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Found 1 deadlock.
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)