bogdan t. created AMQ-9342:
------------------------------

             Summary: deadlock between threads calling failover and rollback
                 Key: AMQ-9342
                 URL: https://issues.apache.org/jira/browse/AMQ-9342
             Project: ActiveMQ
          Issue Type: Bug
         Environment: 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}

            Reporter: bogdan t.






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

Reply via email to