[ 
https://issues.apache.org/jira/browse/AMQ-5260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14057439#comment-14057439
 ] 

matteo rulli edited comment on AMQ-5260 at 7/11/14 8:34 AM:
------------------------------------------------------------

I tried with the following patch (see patch attachment *AMQ_5260.patch*):
{noformat}
--- 
\activemq-parent-5.9.0-orig\activemq-broker\src\main\java\org\apache\activemq\network\DemandForwardingBridgeSupport.java
    Tue Oct 15 00:41:46 2013
+++ 
\activemq-parent-5.9.0\activemq-broker\src\main\java\org\apache\activemq\network\DemandForwardingBridgeSupport.java
 Thu Jul 10 11:51:44 2014
@@ -30,6 +30,8 @@
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
 
 import javax.management.ObjectName;
 
@@ -125,6 +127,8 @@
     private Transport duplexInboundLocalBroker = null;
     private ProducerInfo duplexInboundLocalProducerInfo;
 
+    private static final Lock consumerInfoLock = new ReentrantLock(); 
+    
     public DemandForwardingBridgeSupport(NetworkBridgeConfiguration 
configuration, Transport localBroker, Transport remoteBroker) {
         this.configuration = configuration;
         this.localBroker = localBroker;
@@ -708,11 +712,16 @@
                 return;
             }
 
+            /* ------------------------- AMQ-5260 start 
----------------------- */
             // in a cyclic network there can be multiple bridges per broker 
that can propagate
             // a network subscription so there is a need to synchronize on a 
shared entity
-            synchronized (brokerService.getVmConnectorURI()) {
-                addConsumerInfo(info);
-            }
+//            synchronized (brokerService.getVmConnectorURI()) {
+//                addConsumerInfo(info);
+//            }
+            // the lock has been moved in the addConsumerInfo method to 
overcome the AMQ-5260
+            addConsumerInfo(info);
+            /* ------------------------- AMQ-5260 end 
------------------------- */
+            
         } else if (data.getClass() == DestinationInfo.class) {
             // It's a destination info - we want to pass up information about 
temporary destinations
             final DestinationInfo destInfo = (DestinationInfo) data;
@@ -1115,20 +1124,31 @@
     }
 
     protected void addConsumerInfo(final ConsumerInfo consumerInfo) throws 
IOException {
-        ConsumerInfo info = consumerInfo.copy();
-        addRemoteBrokerToBrokerPath(info);
-        DemandSubscription sub = createDemandSubscription(info);
-        if (sub != null) {
-            if (duplicateSuppressionIsRequired(sub)) {
-                undoMapRegistration(sub);
-            } else {
-                if (consumerInfo.isDurable()) {
-                    sub.getDurableRemoteSubs().add(new 
SubscriptionInfo(sub.getRemoteInfo().getClientId(), 
consumerInfo.getSubscriptionName()));
-                }
-                addSubscription(sub);
-                LOG.debug("{} new demand subscription: {}", 
configuration.getBrokerName(), sub);
-            }
-        }
+       boolean addSubscription = false;
+       DemandSubscription sub = null;
+       consumerInfoLock.lock();
+       try{
+               ConsumerInfo info = consumerInfo.copy();
+               addRemoteBrokerToBrokerPath(info);
+               sub = createDemandSubscription(info);
+               if (sub != null) {
+                       if (duplicateSuppressionIsRequired(sub)) {
+                               undoMapRegistration(sub);
+                       } else {
+                               if (consumerInfo.isDurable()) {
+                                       sub.getDurableRemoteSubs().add(new 
SubscriptionInfo(sub.getRemoteInfo().getClientId(), 
consumerInfo.getSubscriptionName()));
+                               }
+                               addSubscription = true;
+                               LOG.debug("{} new demand subscription: {}", 
configuration.getBrokerName(), sub);
+                       }
+               }
+       }finally{
+               consumerInfoLock.unlock();
+       }
+       if(addSubscription && sub != null) {
+               addSubscription(sub);
+               LOG.debug("{} new demand subscription: {} has beed added", 
configuration.getBrokerName(), sub);
+       }
     }
 
     private void undoMapRegistration(DemandSubscription sub) {
{noformat}

But in I run into another deadlock:

STACKTRACE 1:
{noformat}
Name: ActiveMQ BrokerService[master2] Task-106
State: WAITING on java.util.concurrent.locks.ReentrantLock$NonfairSync@2c8aad83 
owned by: ActiveMQ Transport: tcp:///10.0.1.219:61616@64215
Total blocked: 0  Total waited: 6

Stack trace: 
 sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown
 Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(Unknown 
Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Unknown Source)
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(Unknown Source)
java.util.concurrent.locks.ReentrantLock.lock(Unknown Source)
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:66)
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:930)
org.apache.activemq.network.DemandForwardingBridgeSupport$2.onCommand(DemandForwardingBridgeSupport.java:177)
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
org.apache.activemq.transport.vm.VMTransport.doDispatch(VMTransport.java:138)
org.apache.activemq.transport.vm.VMTransport.dispatch(VMTransport.java:127)
   - locked java.util.concurrent.atomic.AtomicBoolean@591f9578
org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:104)
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1339)
org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:858)
org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:904)
org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:129)
org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:47)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
{noformat}

----
STACKTRACE 2:
{noformat}
Name: ActiveMQ Transport: tcp:///10.0.1.219:61616@64215
State: WAITING on java.util.concurrent.locks.ReentrantLock$NonfairSync@76455420 
owned by: ActiveMQ BrokerService[master2] Task-106
Total blocked: 11  Total waited: 11

Stack trace: 
 sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown
 Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(Unknown 
Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Unknown Source)
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(Unknown Source)
java.util.concurrent.locks.ReentrantLock.lock(Unknown Source)
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:66)
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1339)
org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:858)
org.apache.activemq.broker.TransportConnection.dispatchSync(TransportConnection.java:818)
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:151)
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
org.apache.activemq.transport.vm.VMTransport.doDispatch(VMTransport.java:138)
org.apache.activemq.transport.vm.VMTransport.dispatch(VMTransport.java:127)
   - locked java.util.concurrent.atomic.AtomicBoolean@278a1cfb
org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:104)
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86)
org.apache.activemq.network.DemandForwardingBridgeSupport.addSubscription(DemandForwardingBridgeSupport.java:865)
org.apache.activemq.network.DemandForwardingBridgeSupport.addConsumerInfo(DemandForwardingBridgeSupport.java:1149)
org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteConsumerAdvisory(DemandForwardingBridgeSupport.java:722)
org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:585)
org.apache.activemq.network.DemandForwardingBridgeSupport$3.onCommand(DemandForwardingBridgeSupport.java:195)
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
org.apache.activemq.transport.failover.FailoverTransport$3.onCommand(FailoverTransport.java:196)
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270)
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
java.lang.Thread.run(Unknown Source)
{noformat}
This time the locks involved are 
_org.apache.activemq.transport.vm.VMTransport.started_ and  again the 
_org.apache.activemq.transport.MutexTransport.writeLock_ one.

Am I following a red herring here?


was (Author: matteor):
I tried with the following patch:
{noformat}
--- 
\activemq-parent-5.9.0-orig\activemq-broker\src\main\java\org\apache\activemq\network\DemandForwardingBridgeSupport.java
    Tue Oct 15 00:41:46 2013
+++ 
\activemq-parent-5.9.0\activemq-broker\src\main\java\org\apache\activemq\network\DemandForwardingBridgeSupport.java
 Thu Jul 10 11:51:44 2014
@@ -30,6 +30,8 @@
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
 
 import javax.management.ObjectName;
 
@@ -125,6 +127,8 @@
     private Transport duplexInboundLocalBroker = null;
     private ProducerInfo duplexInboundLocalProducerInfo;
 
+    private static final Lock consumerInfoLock = new ReentrantLock(); 
+    
     public DemandForwardingBridgeSupport(NetworkBridgeConfiguration 
configuration, Transport localBroker, Transport remoteBroker) {
         this.configuration = configuration;
         this.localBroker = localBroker;
@@ -708,11 +712,16 @@
                 return;
             }
 
+            /* ------------------------- AMQ-5260 start 
----------------------- */
             // in a cyclic network there can be multiple bridges per broker 
that can propagate
             // a network subscription so there is a need to synchronize on a 
shared entity
-            synchronized (brokerService.getVmConnectorURI()) {
-                addConsumerInfo(info);
-            }
+//            synchronized (brokerService.getVmConnectorURI()) {
+//                addConsumerInfo(info);
+//            }
+            // the lock has been moved in the addConsumerInfo method to 
overcome the AMQ-5260
+            addConsumerInfo(info);
+            /* ------------------------- AMQ-5260 end 
------------------------- */
+            
         } else if (data.getClass() == DestinationInfo.class) {
             // It's a destination info - we want to pass up information about 
temporary destinations
             final DestinationInfo destInfo = (DestinationInfo) data;
@@ -1115,20 +1124,31 @@
     }
 
     protected void addConsumerInfo(final ConsumerInfo consumerInfo) throws 
IOException {
-        ConsumerInfo info = consumerInfo.copy();
-        addRemoteBrokerToBrokerPath(info);
-        DemandSubscription sub = createDemandSubscription(info);
-        if (sub != null) {
-            if (duplicateSuppressionIsRequired(sub)) {
-                undoMapRegistration(sub);
-            } else {
-                if (consumerInfo.isDurable()) {
-                    sub.getDurableRemoteSubs().add(new 
SubscriptionInfo(sub.getRemoteInfo().getClientId(), 
consumerInfo.getSubscriptionName()));
-                }
-                addSubscription(sub);
-                LOG.debug("{} new demand subscription: {}", 
configuration.getBrokerName(), sub);
-            }
-        }
+       boolean addSubscription = false;
+       DemandSubscription sub = null;
+       consumerInfoLock.lock();
+       try{
+               ConsumerInfo info = consumerInfo.copy();
+               addRemoteBrokerToBrokerPath(info);
+               sub = createDemandSubscription(info);
+               if (sub != null) {
+                       if (duplicateSuppressionIsRequired(sub)) {
+                               undoMapRegistration(sub);
+                       } else {
+                               if (consumerInfo.isDurable()) {
+                                       sub.getDurableRemoteSubs().add(new 
SubscriptionInfo(sub.getRemoteInfo().getClientId(), 
consumerInfo.getSubscriptionName()));
+                               }
+                               addSubscription = true;
+                               LOG.debug("{} new demand subscription: {}", 
configuration.getBrokerName(), sub);
+                       }
+               }
+       }finally{
+               consumerInfoLock.unlock();
+       }
+       if(addSubscription && sub != null) {
+               addSubscription(sub);
+               LOG.debug("{} new demand subscription: {} has beed added", 
configuration.getBrokerName(), sub);
+       }
     }
 
     private void undoMapRegistration(DemandSubscription sub) {
{noformat}

But in I run into another deadlock:

STACKTRACE 1:
{noformat}
Name: ActiveMQ BrokerService[master2] Task-106
State: WAITING on java.util.concurrent.locks.ReentrantLock$NonfairSync@2c8aad83 
owned by: ActiveMQ Transport: tcp:///10.0.1.219:61616@64215
Total blocked: 0  Total waited: 6

Stack trace: 
 sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown
 Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(Unknown 
Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Unknown Source)
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(Unknown Source)
java.util.concurrent.locks.ReentrantLock.lock(Unknown Source)
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:66)
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:930)
org.apache.activemq.network.DemandForwardingBridgeSupport$2.onCommand(DemandForwardingBridgeSupport.java:177)
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
org.apache.activemq.transport.vm.VMTransport.doDispatch(VMTransport.java:138)
org.apache.activemq.transport.vm.VMTransport.dispatch(VMTransport.java:127)
   - locked java.util.concurrent.atomic.AtomicBoolean@591f9578
org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:104)
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1339)
org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:858)
org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:904)
org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:129)
org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:47)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
{noformat}

----
STACKTRACE 2:
{noformat}
Name: ActiveMQ Transport: tcp:///10.0.1.219:61616@64215
State: WAITING on java.util.concurrent.locks.ReentrantLock$NonfairSync@76455420 
owned by: ActiveMQ BrokerService[master2] Task-106
Total blocked: 11  Total waited: 11

Stack trace: 
 sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown
 Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(Unknown 
Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Unknown Source)
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(Unknown Source)
java.util.concurrent.locks.ReentrantLock.lock(Unknown Source)
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:66)
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1339)
org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:858)
org.apache.activemq.broker.TransportConnection.dispatchSync(TransportConnection.java:818)
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:151)
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
org.apache.activemq.transport.vm.VMTransport.doDispatch(VMTransport.java:138)
org.apache.activemq.transport.vm.VMTransport.dispatch(VMTransport.java:127)
   - locked java.util.concurrent.atomic.AtomicBoolean@278a1cfb
org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:104)
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86)
org.apache.activemq.network.DemandForwardingBridgeSupport.addSubscription(DemandForwardingBridgeSupport.java:865)
org.apache.activemq.network.DemandForwardingBridgeSupport.addConsumerInfo(DemandForwardingBridgeSupport.java:1149)
org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteConsumerAdvisory(DemandForwardingBridgeSupport.java:722)
org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:585)
org.apache.activemq.network.DemandForwardingBridgeSupport$3.onCommand(DemandForwardingBridgeSupport.java:195)
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
org.apache.activemq.transport.failover.FailoverTransport$3.onCommand(FailoverTransport.java:196)
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270)
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
java.lang.Thread.run(Unknown Source)
{noformat}
This time the locks involved are 
_org.apache.activemq.transport.vm.VMTransport.started_ and  again the 
_org.apache.activemq.transport.MutexTransport.writeLock_ one.

Am I following a red herring here?

> Cross talk over duplex network connection can lead to blocking (alternative 
> take)
> ---------------------------------------------------------------------------------
>
>                 Key: AMQ-5260
>                 URL: https://issues.apache.org/jira/browse/AMQ-5260
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.9.0
>            Reporter: matteo rulli
>         Attachments: AMQ_5260.patch, AMQ_5260_2.patch, AMQ_5260_3.patch, 
> deadlock.jpg, debug.jpg
>
>
> Pretty the same description with respect to AMQ-4328. 
> ----
> !deadlock.jpg!
> h2. Stacktraces:
> Stacktrace no.1:
> {noformat}
> Name: ActiveMQ NIO Worker 12
> State: BLOCKED on java.net.URI@1bae2b28 owned by: ActiveMQ Transport: 
> tcp:///10.0.1.219:61616@57789
> Total blocked: 2  Total waited: 67
> Stack trace: 
>  
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteConsumerAdvisory(DemandForwardingBridgeSupport.java:714)
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:581)
> org.apache.activemq.network.DemandForwardingBridgeSupport$3.onCommand(DemandForwardingBridgeSupport.java:191)
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270)
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
> org.apache.activemq.transport.nio.NIOTransport.serviceRead(NIOTransport.java:138)
> org.apache.activemq.transport.nio.NIOTransport$1.onSelect(NIOTransport.java:69)
> org.apache.activemq.transport.nio.SelectorSelection.onSelect(SelectorSelection.java:94)
> org.apache.activemq.transport.nio.SelectorWorker$1.run(SelectorWorker.java:119)
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> java.lang.Thread.run(Unknown Source)
> {noformat}
> ----
> stack trace no.2
> {noformat}
> Name: ActiveMQ Transport: tcp:///10.0.1.219:61616@57789
> State: WAITING on 
> java.util.concurrent.locks.ReentrantLock$NonfairSync@3cdbfa3e owned by: 
> ActiveMQ BrokerService[master2] Task-4
> Total blocked: 19  Total waited: 3
> Stack trace: 
>  sun.misc.Unsafe.park(Native Method)
> java.util.concurrent.locks.LockSupport.park(Unknown Source)
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown
>  Source)
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(Unknown 
> Source)
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Unknown Source)
> java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(Unknown Source)
> java.util.concurrent.locks.ReentrantLock.lock(Unknown Source)
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:66)
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1339)
> org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:858)
> org.apache.activemq.broker.TransportConnection.dispatchSync(TransportConnection.java:818)
> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:151)
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
> org.apache.activemq.transport.vm.VMTransport.doDispatch(VMTransport.java:138)
> org.apache.activemq.transport.vm.VMTransport.dispatch(VMTransport.java:127)
>    - locked java.util.concurrent.atomic.AtomicBoolean@689389da
> org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:104)
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86)
> org.apache.activemq.network.DemandForwardingBridgeSupport.addSubscription(DemandForwardingBridgeSupport.java:856)
> org.apache.activemq.network.DemandForwardingBridgeSupport.addConsumerInfo(DemandForwardingBridgeSupport.java:1128)
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteConsumerAdvisory(DemandForwardingBridgeSupport.java:714)
>    - locked java.net.URI@1bae2b28
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:581)
> org.apache.activemq.network.DemandForwardingBridgeSupport$3.onCommand(DemandForwardingBridgeSupport.java:191)
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
> org.apache.activemq.transport.failover.FailoverTransport$3.onCommand(FailoverTransport.java:196)
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270)
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
> java.lang.Thread.run(Unknown Source)
> {noformat}
> ----
> stack trace no.3
> {noformat}
> Name: ActiveMQ BrokerService[master2] Task-4
> State: WAITING on 
> java.util.concurrent.locks.ReentrantLock$NonfairSync@717bb9c owned by: 
> ActiveMQ Transport: tcp:///10.0.1.219:61616@57789
> Total blocked: 19  Total waited: 117
> Stack trace: 
>  sun.misc.Unsafe.park(Native Method)
> java.util.concurrent.locks.LockSupport.park(Unknown Source)
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown
>  Source)
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(Unknown 
> Source)
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Unknown Source)
> java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(Unknown Source)
> java.util.concurrent.locks.ReentrantLock.lock(Unknown Source)
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:66)
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:921)
> org.apache.activemq.network.DemandForwardingBridgeSupport$2.onCommand(DemandForwardingBridgeSupport.java:173)
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
> org.apache.activemq.transport.vm.VMTransport.doDispatch(VMTransport.java:138)
> org.apache.activemq.transport.vm.VMTransport.dispatch(VMTransport.java:127)
>    - locked java.util.concurrent.atomic.AtomicBoolean@453bb109
> org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:104)
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1339)
> org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:858)
> org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:904)
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:129)
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:47)
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> java.lang.Thread.run(Unknown Source)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to