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

Jean-Baptiste Onofré reassigned AMQ-9342:
-----------------------------------------

    Assignee: Jean-Baptiste Onofré

> deadlock between threads calling failover and rollback
> ------------------------------------------------------
>
>                 Key: AMQ-9342
>                 URL: https://issues.apache.org/jira/browse/AMQ-9342
>             Project: ActiveMQ
>          Issue Type: Bug
>            Reporter: bogdan t.
>            Assignee: Jean-Baptiste Onofré
>            Priority: Major
>
> We encounter deadlock after failover - looks like order of locking in 
> failover handling is different than locking order during rollback and thread 
> are clashing:
> Rollback:
> - FifoMessageDispatchChannel
> - then ActiveMQConnection
> Failover handling:
> - ActiveMQConnection
> - then FifoMessageDispatchChannel
> See the full stack traces:
> {noformat}
> "thread-doing-rollback":
>       at 
> org.apache.activemq.ActiveMQConnection.getScheduler(ActiveMQConnection.java:2387)
>       - waiting to lock <0x00007f315a19d550> (a 
> org.apache.activemq.ActiveMQConnection)
>       at 
> org.apache.activemq.ActiveMQSession.getScheduler(ActiveMQSession.java:2254)
>       at 
> org.apache.activemq.ActiveMQMessageConsumer.rollback(ActiveMQMessageConsumer.java:1356)
>       - locked <0x00007f37630c0d90> (a java.util.LinkedList)
>       - locked <0x00007f37630a4690> (a java.lang.Object)
>       at 
> org.apache.activemq.ActiveMQMessageConsumer$5.afterRollback(ActiveMQMessageConsumer.java:1113)
>       at 
> org.apache.activemq.TransactionContext.afterRollback(TransactionContext.java:166)
>       at 
> org.apache.activemq.TransactionContext.commit(TransactionContext.java:344)
>       at org.apache.activemq.ActiveMQSession.commit(ActiveMQSession.java:583)
>       at 
> org.apache.activemq.jms.pool.PooledSession.commit(PooledSession.java:167)
>       at 
> org.springframework.jms.support.JmsUtils.commitIfNecessary(JmsUtils.java:218)
>       at 
> org.springframework.jms.listener.AbstractMessageListenerContainer.commitIfNecessary(AbstractMessageListenerContainer.java:776)
>       at 
> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:680)
>       at 
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:331)
>       at 
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:270)
>       at 
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1237)
>       at 
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1227)
>       at 
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1120)
>       at java.lang.Thread.run([email protected]/Thread.java:829)
> "ActiveMQ Connection Executor: failover:(nio://....)&maxReconnectAttempts=0":
>       at 
> org.apache.activemq.FifoMessageDispatchChannel.close(FifoMessageDispatchChannel.java:133)
>       - waiting to lock <0x00007f37630a4690> (a java.lang.Object)
>       at 
> org.apache.activemq.ActiveMQMessageConsumer.dispose(ActiveMQMessageConsumer.java:872)
>       at org.apache.activemq.ActiveMQSession.dispose(ActiveMQSession.java:730)
>       - locked <0x00007f376311fd78> (a org.apache.activemq.ActiveMQSession)
>       at 
> org.apache.activemq.ActiveMQConnection.close(ActiveMQConnection.java:671)
>       - locked <0x00007f315a19d550> (a org.apache.activemq.ActiveMQConnection)
>       at 
> org.apache.activemq.jms.pool.ConnectionPool.close(ConnectionPool.java:176)
>       - locked <0x00007f315a230e50> (a 
> org.apache.activemq.pool.PooledConnectionFactory$1)
>       at 
> org.apache.activemq.jms.pool.ConnectionPool.onException(ConnectionPool.java:381)
>       at 
> org.apache.activemq.ActiveMQConnection$5.run(ActiveMQConnection.java:1967)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1128)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
>       at java.lang.Thread.run([email protected]/Thread.java:829)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to