[
https://issues.apache.org/jira/browse/AMQ-1569?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Timothy Bish closed AMQ-1569.
-----------------------------
Resolution: Fixed
Fix Version/s: (was: NEEDS_REVIEWED)
Commenter reports issue fixed, no test case given to test the issue.
> Dead lock during XA recovery when activeMq 5.0.0 is used with Atomikos
> ----------------------------------------------------------------------
>
> Key: AMQ-1569
> URL: https://issues.apache.org/jira/browse/AMQ-1569
> Project: ActiveMQ
> Issue Type: Bug
> Affects Versions: 5.0.0
> Reporter: Mathieu Baril
>
> Hi,
> I developed an application that runs in an OSGI environment (Equinox). My
> application is developed using Spring Dynamic Modules 1.0-rc2, ActiveMq 5.0.0
> and Atomikos 3.2.2.
> Sometimes (50% of the time) when I start my application, the bundle that
> declare the connection factories to the jms broker runs into deadlock.
> This is the declaration of my connection factories:
> <bean id="activemq.connectionFactory"
> class="com.trilliantnetworks.griffin.utils.CustomXAJMSConnectionFactory">
> <property name="brokerURL" value="
> failover:(tcp://software2:61616,tcp://software1:61616)" />
> </bean>
>
> <!-- Configure the JMS connector; call init to register for recovery! -->
> <bean id="atomikos.connectionFactory"
> class="com.atomikos.jms.TopicConnectionFactoryBean"
> init-method="init">
> <property name="resourceName" value=" jms.connectionFactory"/>
> <property name="xaTopicConnectionFactory" ref="
> activemq.connectionFactory "/>
> </bean>
>
> <bean id="listen.jms.spring.singleConnectionFactory"
> class="org.springframework.jms.connection.SingleConnectionFactory"
> destroy-method="destroy">
> <constructor-arg ref="atomikos.connectionFactory "/>
> </bean>
> Looking deeper in the code I found that the application block when init is
> called in com.atomikos.jms.TopicConnectionFactoryBean.
> The init method calls the method isSameRM of
> org.apache.activemq.TransactionContext that eventually calls
> waitForBrokerInfo in org.apache.activemq.ActiveMQConnection. The method
> blocks on brokerInfoReceived.await(). So I tried to found why
> brokerInfoReceived.countDown() is never called...
> I found that this is because createTransportListener of
> org.apache.activemq.transport.failover.FailoverTransport is sometimes called
> before the member variable transportListener was set. createTransportListener
> is called by the Thread ActiveMQ Transport:
> tcp://software2/192.9.200.182:61616 while setTransportListener is called by
> the main Thread that initialize my bundle.
> I am unable to reproduce the issue with activeMQ 4.1.1 so I think that is
> issue has been introduced with version 5.0.0.
> Also, when I use the connection URL "tcp://software2:61616" instead of
> "failover:(tcp://software2:61616,tcp://software1:61616)" my application
> always start correctly.
--
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