You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Holger Bruch (JIRA)" <ji...@apache.org> on 2008/06/26 18:45:00 UTC

[jira] Created: (AMQ-1827) Blocked DemandForwardingBridgeSupport when transport is interrupted on startup

Blocked DemandForwardingBridgeSupport when transport is interrupted on startup
------------------------------------------------------------------------------

                 Key: AMQ-1827
                 URL: https://issues.apache.org/activemq/browse/AMQ-1827
             Project: ActiveMQ
          Issue Type: Bug
    Affects Versions: 4.1.1
            Reporter: Holger Bruch


I'm running a AMQ 4.1.1 network of brokers and encounter a deadlock that seems to be caused by an interrupted Transport while the local bridge is still waiting for the remoteBrokerName... 

"Thread-119" daemon prio=1 tid=0x08231c30 nid=0x44ae in Object.wait() [0xc4016000..0xc4016540]
	at java.lang.Object.wait(Native Method)
	- waiting on <0xcac518f0> (a edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch)
	at java.lang.Object.wait(Object.java:474)
	at edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch.await(CountDownLatch.java:179)
	- locked <0xcac518f0> (a edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch)
	at org.apache.activemq.network.DemandForwardingBridgeSupport.startLocalBridge(DemandForwardingBridgeSupport.java:231)
	- locked <0xcac50998> (a org.apache.activemq.network.DiscoveryNetworkConnector$3)
	at org.apache.activemq.network.DemandForwardingBridgeSupport$3.run(DemandForwardingBridgeSupport.java:205)

"ActiveMQ Transport: tcp://xxx/yyy:61050" prio=1 tid=0x08479378 nid=0x4476 waiting for monitor entry [0xc3396000..0xc33967c0]
	at org.apache.activemq.network.DemandForwardingBridgeSupport$2.transportInterupted(DemandForwardingBridgeSupport.java:148)
	- waiting to lock <0xcac50998> (a org.apache.activemq.network.DiscoveryNetworkConnector$3)
	at org.apache.activemq.transport.TransportFilter.transportInterupted(TransportFilter.java:100)
	at org.apache.activemq.transport.TransportFilter.transportInterupted(TransportFilter.java:100)
	at org.apache.activemq.transport.failover.FailoverTransport$1.transportInterupted(FailoverTransport.java:130)
	at org.apache.activemq.transport.failover.FailoverTransport.handleTransportFailure(FailoverTransport.java:243)
	at org.apache.activemq.transport.failover.FailoverTransport.access$300(FailoverTransport.java:55)
	at org.apache.activemq.transport.failover.FailoverTransport$1.onException(FailoverTransport.java:120)
	at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:96)
	at org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:147)
	at org.apache.activemq.transport.InactivityMonitor.onException(InactivityMonitor.java:150)
	at org.apache.activemq.transport.TransportSupport.onException(TransportSupport.java:97)
	at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:150)
	at java.lang.Thread.run(Thread.java:595)

The code in trunk seems still be prone to this deadlock. 

Regards,
Holger

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (AMQ-1827) Blocked DemandForwardingBridgeSupport when transport is interrupted on startup

Posted by "Holger Bruch (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/AMQ-1827?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Holger Bruch updated AMQ-1827:
------------------------------

    Attachment: DemandForwardingBridgeSupport.patch

The attached patch (applied to trunk) should avoid deadlocks during bridge startup. I'm not aware of any negative side effects, but since it is ported from AMQ-4.1.1 to trunk, there might be conflicts with e.g. duplex connections.
I also added the patch of Chris Hofstaedter (AMQ-734) which performs a full restart of local and remote bridge on transport resume. Otherwise I had hanging brokers especially after broker restarts. 

> Blocked DemandForwardingBridgeSupport when transport is interrupted on startup
> ------------------------------------------------------------------------------
>
>                 Key: AMQ-1827
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1827
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 4.1.1
>            Reporter: Holger Bruch
>         Attachments: DemandForwardingBridgeSupport.patch
>
>
> I'm running a AMQ 4.1.1 network of brokers and encounter a deadlock that seems to be caused by an interrupted Transport while the local bridge is still waiting for the remoteBrokerName... 
> "Thread-119" daemon prio=1 tid=0x08231c30 nid=0x44ae in Object.wait() [0xc4016000..0xc4016540]
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0xcac518f0> (a edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch)
> 	at java.lang.Object.wait(Object.java:474)
> 	at edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch.await(CountDownLatch.java:179)
> 	- locked <0xcac518f0> (a edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch)
> 	at org.apache.activemq.network.DemandForwardingBridgeSupport.startLocalBridge(DemandForwardingBridgeSupport.java:231)
> 	- locked <0xcac50998> (a org.apache.activemq.network.DiscoveryNetworkConnector$3)
> 	at org.apache.activemq.network.DemandForwardingBridgeSupport$3.run(DemandForwardingBridgeSupport.java:205)
> "ActiveMQ Transport: tcp://xxx/yyy:61050" prio=1 tid=0x08479378 nid=0x4476 waiting for monitor entry [0xc3396000..0xc33967c0]
> 	at org.apache.activemq.network.DemandForwardingBridgeSupport$2.transportInterupted(DemandForwardingBridgeSupport.java:148)
> 	- waiting to lock <0xcac50998> (a org.apache.activemq.network.DiscoveryNetworkConnector$3)
> 	at org.apache.activemq.transport.TransportFilter.transportInterupted(TransportFilter.java:100)
> 	at org.apache.activemq.transport.TransportFilter.transportInterupted(TransportFilter.java:100)
> 	at org.apache.activemq.transport.failover.FailoverTransport$1.transportInterupted(FailoverTransport.java:130)
> 	at org.apache.activemq.transport.failover.FailoverTransport.handleTransportFailure(FailoverTransport.java:243)
> 	at org.apache.activemq.transport.failover.FailoverTransport.access$300(FailoverTransport.java:55)
> 	at org.apache.activemq.transport.failover.FailoverTransport$1.onException(FailoverTransport.java:120)
> 	at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:96)
> 	at org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:147)
> 	at org.apache.activemq.transport.InactivityMonitor.onException(InactivityMonitor.java:150)
> 	at org.apache.activemq.transport.TransportSupport.onException(TransportSupport.java:97)
> 	at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:150)
> 	at java.lang.Thread.run(Thread.java:595)
> The code in trunk seems still be prone to this deadlock. 
> Regards,
> Holger

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.