You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by bobby_carp <am...@thecarps.net> on 2014/05/05 22:57:52 UTC

Transaction rolled back during removeMessage "No operations allowed after statement closed"

I am running into sporadic failures of ActiveMQ when my message handler is
handling a message.  ActiveMQ is trying to remove the message, but gets SQL
exception from MySQL about "No operations allowed after statement closed". 
It seems like it is related to a bad/failed connection to MySQL, but MySQL
is definitely up and running and my handler code successfully used Hibernate
to persist an entity right before this failure in trying to remove the JMS
message.

I am doing a very straight-forward use case, running under Apache Tomcat 7
with MySQL 5.5.  Here is the stack crawl from the exception.

Any help is appreciated!

2014-05-03 18:03:30,379 WARN
[org.springframework.jms.listener.DefaultMessageListenerContainer#0-6]
DefaultMessageListenerContainer.invokeErrorHandler(696) | Execution of JMS
message listener failed, and no ErrorHandler has been set.
javax.jms.JMSException: STORE COMMIT FAILED: Transaction rolled back
        at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54)
        at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1405)
        at
org.apache.activemq.TransactionContext.syncSendPacketWithInterruptionHandling(TransactionContext.java:757)
        at
org.apache.activemq.TransactionContext.commit(TransactionContext.java:322)
        at
org.apache.activemq.ActiveMQSession.commit(ActiveMQSession.java:562)
        at
org.apache.activemq.jms.pool.PooledSession.commit(PooledSession.java:162)
        at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at
org.springframework.jms.connection.CachingConnectionFactory$CachedSessionInvocationHandler.invoke(CachingConnectionFactory.java:348)
        at com.sun.proxy.$Proxy89.commit(Unknown Source)
        at
org.springframework.jms.support.JmsUtils.commitIfNecessary(JmsUtils.java:217)
        at
org.springframework.jms.listener.AbstractMessageListenerContainer.commitIfNecessary(AbstractMessageListenerContainer.java:577)
        at
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:482)
        at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325)
        at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1103)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1095)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:992)
        at java.lang.Thread.run(Thread.java:744)
Caused by: javax.transaction.xa.XAException: STORE COMMIT FAILED:
Transaction rolled back
        at
org.apache.activemq.transaction.LocalTransaction.commit(LocalTransaction.java:75)
        at
org.apache.activemq.broker.TransactionBroker.commitTransaction(TransactionBroker.java:253)
        at
org.apache.activemq.broker.MutableBrokerFilter.commitTransaction(MutableBrokerFilter.java:112)
        at
org.apache.activemq.broker.TransportConnection.processCommitTransactionOnePhase(TransportConnection.java:424)
        at
org.apache.activemq.command.TransactionInfo.visit(TransactionInfo.java:100)
        at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292)
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:149)
        at
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
        at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
        at
org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270)
        at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
        at
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
        ... 1 more
Caused by: java.io.IOException: Failed to get store sequenceId for
messageId: ID:ip-172-31-12-248-58664-1398142500942-1:1:5:1:5, on:
queue://incoming.queue. Reason:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No
operations allowed after statement closed.
        at
org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:33)
        at
org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getStoreSequenceIdForMessageId(JDBCPersistenceAdapter.java:843)
        at
org.apache.activemq.store.jdbc.JDBCMessageStore.removeMessage(JDBCMessageStore.java:194)
        at
org.apache.activemq.store.memory.MemoryTransactionStore$4.run(MemoryTransactionStore.java:348)
        at
org.apache.activemq.store.memory.MemoryTransactionStore$Tx.commit(MemoryTransactionStore.java:103)
        at
org.apache.activemq.store.memory.MemoryTransactionStore.commit(MemoryTransactionStore.java:259)
        at
org.apache.activemq.transaction.LocalTransaction.commit(LocalTransaction.java:70)
        ... 13 more
Caused by:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No
operations allowed after statement closed.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
        at com.mysql.jdbc.StatementImpl.checkClosed(StatementImpl.java:458)
        at
com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4410)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:135)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:135)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:135)
        at
org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.getStoreSequenceId(DefaultJDBCAdapter.java:291)
        at
org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getStoreSequenceIdForMessageId(JDBCPersistenceAdapter.java:840)
        ... 18 more




--
View this message in context: http://activemq.2283324.n4.nabble.com/Transaction-rolled-back-during-removeMessage-No-operations-allowed-after-statement-closed-tp4680905.html
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.