Terje Strand created AMQ-7480:
---------------------------------

             Summary: NPE after XA transaction timeout
                 Key: AMQ-7480
                 URL: https://issues.apache.org/jira/browse/AMQ-7480
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 5.15.12
            Reporter: Terje Strand


Under abnormal conditions, some of our JMS listeners use longer than expected 
time. The listeners are using XA transactions. If a XA transaction timer is 
triggered, eventhough the listener successfully processed the message, we get 
an NPE and jdbc connection leak in the broker. 

The offending stack is:
{quote}2020-05-06 14:01:51,697 [eListenerContainer-1] WARN 
.x.XAResourceTransaction - XA resource 'xamq': rollback for XID 
'3139322E3136382E322E3134302E746D313538383739383839393936303030303036:3139322E3136382E322E3134302E746D36'
 raised -7: the XA resource has become unavailable
javax.transaction.xa.XAException: java.lang.NullPointerException
 at 
org.apache.activemq.TransactionContext.toXAException(TransactionContext.java:803)
 ~[activemq-client-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.TransactionContext.rollback(TransactionContext.java:552) 
~[activemq-client-5.15.12.jar:5.15.12]
 at 
com.atomikos.datasource.xa.XAResourceTransaction.rollback(XAResourceTransaction.java:460)
 [transactions-jta-4.0.6.jar:?]
 at com.atomikos.icatch.imp.RollbackMessage.send(RollbackMessage.java:47) 
[transactions-4.0.6.jar:?]
 at com.atomikos.icatch.imp.RollbackMessage.send(RollbackMessage.java:20) 
[transactions-4.0.6.jar:?]
 at 
com.atomikos.icatch.imp.PropagationMessage.submit(PropagationMessage.java:67) 
[transactions-4.0.6.jar:?]
 at com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:63) 
[transactions-4.0.6.jar:?]
 at 
com.atomikos.icatch.imp.Propagator.submitPropagationMessage(Propagator.java:42) 
[transactions-4.0.6.jar:?]
 at 
com.atomikos.icatch.imp.CoordinatorStateHandler.rollbackFromWithinCallback(CoordinatorStateHandler.java:468)
 [transactions-4.0.6.jar:?]
 at 
com.atomikos.icatch.imp.ActiveStateHandler$4.doRollback(ActiveStateHandler.java:189)
 [transactions-4.0.6.jar:?]
 at 
com.atomikos.icatch.imp.CoordinatorStateHandler.rollbackWithAfterCompletionNotification(CoordinatorStateHandler.java:563)
 [transactions-4.0.6.jar:?]
 at 
com.atomikos.icatch.imp.ActiveStateHandler.prepare(ActiveStateHandler.java:184) 
[transactions-4.0.6.jar:?]
 at com.atomikos.icatch.imp.CoordinatorImp.prepare(CoordinatorImp.java:523) 
[transactions-4.0.6.jar:?]
 at com.atomikos.icatch.imp.CoordinatorImp.terminate(CoordinatorImp.java:687) 
[transactions-4.0.6.jar:?]
 at 
com.atomikos.icatch.imp.CompositeTransactionImp.commit(CompositeTransactionImp.java:282)
 [transactions-4.0.6.jar:?]
 at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:172) 
[transactions-jta-4.0.6.jar:?]
 at 
com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java:414)
 [transactions-jta-4.0.6.jar:?]
 at 
com.atomikos.icatch.jta.UserTransactionImp.commit(UserTransactionImp.java:86) 
[transactions-jta-4.0.6.jar:?]
 at 
org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1035)
 [spring-tx-5.2.4.RELEASE.jar:5.2.4.RELEASE]
 at 
org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:743)
 [spring-tx-5.2.4.RELEASE.jar:5.2.4.RELEASE]
 at 
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:711)
 [spring-tx-5.2.4.RELEASE.jar:5.2.4.RELEASE]
 at 
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:251)
 [spring-jms-5.2.4.RELEASE.jar:5.2.4.RELEASE]
 at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1189)
 [spring-jms-5.2.4.RELEASE.jar:5.2.4.RELEASE]
 at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1179)
 [spring-jms-5.2.4.RELEASE.jar:5.2.4.RELEASE]
 at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1076)
 [spring-jms-5.2.4.RELEASE.jar:5.2.4.RELEASE]
 at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: javax.jms.JMSException: java.lang.NullPointerException
 at 
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54)
 ~[activemq-client-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1403)
 ~[activemq-client-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1436)
 ~[activemq-client-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.TransactionContext.rollback(TransactionContext.java:538) 
~[activemq-client-5.15.12.jar:5.15.12]
 ... 24 more
Caused by: java.lang.NullPointerException
 at 
org.apache.activemq.store.jdbc.JdbcMemoryTransactionStore.rollback(JdbcMemoryTransactionStore.java:181)
 ~[activemq-jdbc-store-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.transaction.XATransaction.rollback(XATransaction.java:146) 
~[activemq-broker-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.broker.TransactionBroker.rollbackTransaction(TransactionBroker.java:257)
 ~[activemq-broker-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.broker.BrokerFilter.rollbackTransaction(BrokerFilter.java:149)
 ~[activemq-broker-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.broker.BrokerFilter.rollbackTransaction(BrokerFilter.java:149)
 ~[activemq-broker-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.broker.TransportConnection.processRollbackTransaction(TransportConnection.java:553)
 ~[activemq-broker-5.15.12.jar:5.15.12]
 at org.apache.activemq.command.TransactionInfo.visit(TransactionInfo.java:104) 
~[activemq-client-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:336)
 ~[activemq-broker-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:200)
 ~[activemq-broker-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50) 
~[activemq-client-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125)
 ~[activemq-client-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:301)
 ~[activemq-client-5.15.12.jar:5.15.12]
 at 
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
 ~[activemq-client-5.15.12.jar:5.15.12]
 at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:233) 
~[activemq-client-5.15.12.jar:5.15.12]
 at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215) 
~[activemq-client-5.15.12.jar:5.15.12]
 at java.lang.Thread.run(Thread.java:834) ~[?:?]
{quote}
 

It is believed that this might be related to, or have same underlying root 
condition as [#AMQ-7424]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to