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

Gary Tully resolved AMQ-3277.
-----------------------------

       Resolution: Fixed
    Fix Version/s: 5.6.0
         Assignee: Gary Tully

maxReconnectAttempts=1 on the failover uri sorts this.
                
> Deadlock with static:(failover:(...)) configuration
> ---------------------------------------------------
>
>                 Key: AMQ-3277
>                 URL: https://issues.apache.org/jira/browse/AMQ-3277
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.4.2
>         Environment: 5.4.2 with back-ported patches for AMQ-3176, AMQ-2736, 
> AMQ-3124, AMQ-3125, AMQ-3167.
> Two brokers, each with a single duplex network connection to the other, using 
> static:(failover:(first,second)) URI format.
>            Reporter: Arthur Naseef
>            Assignee: Gary Tully
>             Fix For: 5.6.0
>
>         Attachments: singleTransport.patch
>
>
> Using failover transports with static transports to create a network of 
> brokers with H/A pairs, the failovers lead to deadlocks.
> This appears related to AMQ-3176, but the patch for that problem is included 
> in our 5.4.2 build.
>                 <networkConnector name="nw1_from_nw2" 
> uri="static:(failover:(tcp://127.0.0.1:60992,tcp://127.0.0.1:60002))"
>                                   duplex="true" conduitSubscriptions="false" 
> dynamicOnly="true"
>                                   networkTTL="7" 
> suppressDuplicateQueueSubscriptions="true"
>                                   decreaseNetworkConsumerPriority="true"
>                                   bridgeTempDestinations="true"
>                                   >
>                 </networkConnector>
> The deadlock occurs after stopping and restarting each broker once.  Here's 
> the steps:
>     - start broker1
>     - start broker2
>     * test connectivity
>     - sthudown broker1
>     - restart broker1
>     * test connectivity
>     - shutdown broker2
>     - restart broker2
>     * test connectivity
> Here is the deadlock information from the JVM:
> Java stack information for the threads listed above:
> ===================================================
> "StartRemotelBridge: localBroker=vm://peer-nw2#2":
>         at 
> org.apache.activemq.transport.failover.FailoverTransport.oneway(FailoverTransport.java:477)
>         - waiting to lock <0x00002aaac2df83c8> (a java.lang.Object)
>         at 
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
>         - locked <0x00002aaac2e050f8> (a java.lang.Object)
>         at 
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
>         at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.startRemoteBridge(DemandForwardingBridgeSupport.java:352)
>         - locked <0x00002aaac2df7c50> (a 
> org.apache.activemq.network.DurableConduitBridge)
>         at 
> org.apache.activemq.network.DemandForwardingBridgeSupport$4.run(DemandForwardingBridgeSupport.java:277)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:662)
> "ActiveMQ Failover Worker: 169776139":
>         at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.startLocalBridge(DemandForwardingBridgeSupport.java:290)
>         - waiting to lock <0x00002aaac2df7c50> (a 
> org.apache.activemq.networFound one Java-level deadlock:
> =============================
> "StartRemotelBridge: localBroker=vm://peer-nw2#2":
>   waiting to lock monitor 0x0000000044796938 (object 0x00002aaac2df83c8, a 
> java.lang.Object),
>   which is held by "ActiveMQ Failover Worker: 169776139"
> "ActiveMQ Failover Worker: 169776139":
>   waiting to lock monitor 0x00002aaac470f0b0 (object 0x00002aaac2df7c50, a 
> org.apache.activemq.network.DurableConduitBridge),
>   which is held by k.DurableConduitBridge)
>         at 
> org.apache.activemq.network.DemandForwardingBridgeSupport$2.transportResumed(DemandForwardingBridgeSupport.java:220)
>         at 
> org.apache.activemq.transport.TransportFilter.transportResumed(TransportFilter.java:109)
>         at 
> org.apache.activemq.transport.TransportFilter.transportResumed(TransportFilter.java:109)
>         at 
> org.apache.activemq.transport.failover.FailoverTransport.doReconnect(FailoverTransport.java:870)
>         - locked <0x00002aaac2df83c8> (a java.lang.Object)
>         at 
> org.apache.activemq.transport.failover.FailoverTransport$2.iterate(FailoverTransport.java:135)
>         - locked <0x00002aaac2df83d8> (a java.lang.Object)
>         at 
> org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:98)
>         at 
> org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:36)
> Found 1 deadlock.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to