activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lucio Tarantino (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AMQ-2534) Broker gets stuck with an error about using a closed JDBC statement
Date Tue, 03 Jan 2012 17:00:40 GMT

    [ https://issues.apache.org/jira/browse/AMQ-2534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13178819#comment-13178819
] 

Lucio Tarantino commented on AMQ-2534:
--------------------------------------

Hi,
 I'have the same error? Any news or workaround?
It append sometimes on hight workload and the problem is that the processed message is duplicated.

My environment is:
1. ActiveMQ (apache-activemq-5.4.3) with mysql 5.0.77 as storage.

This is my error trace:

[12-29 23:28:14] ERROR org.mule.exception.DefaultSystemExceptionStrategy [ActiveMQ Session
Task-6864]:
********************************************************************************
Message               : Transaction commit failed
Type                  : org.mule.api.transaction.TransactionException
Code                  : MULE_ERROR-90097
JavaDoc               : http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transaction/TransactionException.html
JMS Code              : null
********************************************************************************
Exception stack is:
1. com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after
statement closed. (java.lang.Throwable)
  com.mysql.jdbc.SQLError:888 (null)
2. Failed to get store sequenceId for messageId: ID:cordoba.jakala.com-52552-1324648464349-0:1:8306:1:1,
on: queue://enel.sap.esiti. Reason: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:
No operations allowed after statement closed. (java.io.IOException)
  org.apache.activemq.util.IOExceptionSupport:33 (null)
3. STORE COMMIT FAILED: Transaction rolled back. (javax.transaction.xa.XAException)
  org.apache.activemq.transaction.LocalTransaction:77 (http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/transaction/xa/XAException.html)
4. STORE COMMIT FAILED: Transaction rolled back.(JMS Code: null) (javax.jms.JMSException)
  org.apache.activemq.util.JMSExceptionSupport:49 (http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/jms/JMSException.html)
5. Transaction commit failed (org.mule.api.transaction.TransactionException)
  org.mule.transport.jms.JmsTransaction:80 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transaction/TransactionException.html)
********************************************************************************
Root Exception stack trace:
java.lang.Throwable: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations
allowed after statement closed.
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:888)
        at com.mysql.jdbc.Statement.checkClosed(Statement.java:385)
        at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:3455)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
        at org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.getStoreSequenceId(DefaultJDBCAdapter.java:272)
        at org.apache.activemq.store.jdbc.JDBCMessageStore.getStoreSequenceIdForMessageId(JDBCMessageStore.java:293)
        at org.apache.activemq.store.jdbc.JDBCMessageStore.removeMessage(JDBCMessageStore.java:148)
        at org.apache.activemq.store.memory.MemoryTransactionStore$4.run(MemoryTransactionStore.java:302)
        at org.apache.activemq.store.memory.MemoryTransactionStore$Tx.commit(MemoryTransactionStore.java:102)
        at org.apache.activemq.store.memory.MemoryTransactionStore.commit(MemoryTransactionStore.java:222)
        at org.apache.activemq.transaction.LocalTransaction.commit(LocalTransaction.java:72)
        at org.apache.activemq.broker.TransactionBroker.commitTransaction(TransactionBroker.java:173)
        at org.apache.activemq.broker.MutableBrokerFilter.commitTransaction(MutableBrokerFilter.java:103)
        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:311)
        at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:185)
        at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69)
        at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
        at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:228)
        at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
        at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:220)
        at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:202)
        at java.lang.Thread.run(Thread.java:662)

********************************************************************************

[12-29 23:28:14] ERROR org.mule.transport.jms.MultiConsumerJmsMessageReceiver [ActiveMQ Session
Task-6864]: javax.jms.IllegalStateException: This session is transacted
	
                
> Broker gets stuck with an error about using a closed JDBC statement
> -------------------------------------------------------------------
>
>                 Key: AMQ-2534
>                 URL: https://issues.apache.org/jira/browse/AMQ-2534
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Message Store
>    Affects Versions: 5.3.0
>         Environment: Linux
> Sun JDK 6, several different update versions
> Mysql
>            Reporter: Marshall Pierce
>             Fix For: 5.x
>
>
> This seems to happen after a period of several hours of inactivity. One symptom of the
problem is that in the web UI you can see that a queue has a non-zero message count, but clicking
on the queue to see the actual messages shows nothing.
> Config:
>         <persistenceAdapter>
>             <jdbcPersistenceAdapter dataSource="#mysql-ds"/>
>         </persistenceAdapter>
>     <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
>         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
>         <property name="url" value="jdbc:mysql://dbserver/activeMQ?relaxAutoCommit=true&amp;autoReconnect=true"/>
>         <property name="username" value="user"/>
>         <property name="password" value="pass"/>
>         <property name="maxActive" value="200"/>
>         <property name="poolPreparedStatements" value="true"/>
>     </bean>
> Log:
> 2009-11-27 07:40:25,026 | WARN  | Close failed: Already closed. | org.apache.activemq.store.jdbc.TransactionContext
| QueueThread:queue://(queue name)
> java.sql.SQLException: Already closed.
> 	at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:84)
> 	at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:181)
> 	at org.apache.activemq.store.jdbc.TransactionContext.close(TransactionContext.java:135)
> 	at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:198)
> 	at org.apache.activemq.store.ProxyMessageStore.getMessageCount(ProxyMessageStore.java:83)
> 	at org.apache.activemq.broker.region.cursors.QueueStorePrefetch.getStoreSize(QueueStorePrefetch.java:63)
> 	at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.remove(AbstractStoreCursor.java:185)
> 	at org.apache.activemq.broker.region.cursors.StoreQueueCursor.remove(StoreQueueCursor.java:141)
> 	at org.apache.activemq.broker.region.Queue.doPageIn(Queue.java:1367)
> 	at org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:1503)
> 	at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1178)
> 	at org.apache.activemq.thread.DeterministicTaskRunner.runTask(DeterministicTaskRunner.java:84)
> 	at org.apache.activemq.thread.DeterministicTaskRunner$1.run(DeterministicTaskRunner.java:41)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> 	at java.lang.Thread.run(Unknown Source)
> 2009-11-27 07:40:25,027 | ERROR | Failed to get message count | org.apache.activemq.broker.region.cursors.QueueStorePrefetch
| QueueThread:queue://(queue name)
> java.io.IOException: Failed to get Message Count: queue://(queue name). Reason: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:
No operations allowed after statement closed.
> 	at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:33)
> 	at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:196)
> 	at org.apache.activemq.store.ProxyMessageStore.getMessageCount(ProxyMessageStore.java:83)
> 	at org.apache.activemq.broker.region.cursors.QueueStorePrefetch.getStoreSize(QueueStorePrefetch.java:63)
> 	at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.remove(AbstractStoreCursor.java:185)
> 	at org.apache.activemq.broker.region.cursors.StoreQueueCursor.remove(StoreQueueCursor.java:141)
> 	at org.apache.activemq.broker.region.Queue.doPageIn(Queue.java:1367)
> 	at org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:1503)
> 	at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1178)
> 	at org.apache.activemq.thread.DeterministicTaskRunner.runTask(DeterministicTaskRunner.java:84)
> 	at org.apache.activemq.thread.DeterministicTaskRunner$1.run(DeterministicTaskRunner.java:41)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> 	at java.lang.Thread.run(Unknown Source)
> Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations
allowed after statement closed.
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:888)
> 	at com.mysql.jdbc.Statement.checkClosed(Statement.java:380)
> 	at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:3374)
> 	at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
> 	at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
> 	at org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.doGetMessageCount(DefaultJDBCAdapter.java:700)
> 	at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:192)
> 	... 12 more
> 2009-11-27 07:40:25,028 | ERROR | Failed to page in more queue messages  | org.apache.activemq.broker.region.Queue
| QueueThread:queue://(queue name)
> java.lang.RuntimeException: java.io.IOException: Failed to get Message Count: queue://(queue
name). Reason: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations
allowed after statement closed.
> 	at org.apache.activemq.broker.region.cursors.QueueStorePrefetch.getStoreSize(QueueStorePrefetch.java:66)
> 	at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.remove(AbstractStoreCursor.java:185)
> 	at org.apache.activemq.broker.region.cursors.StoreQueueCursor.remove(StoreQueueCursor.java:141)
> 	at org.apache.activemq.broker.region.Queue.doPageIn(Queue.java:1367)
> 	at org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:1503)
> 	at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1178)
> 	at org.apache.activemq.thread.DeterministicTaskRunner.runTask(DeterministicTaskRunner.java:84)
> 	at org.apache.activemq.thread.DeterministicTaskRunner$1.run(DeterministicTaskRunner.java:41)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> 	at java.lang.Thread.run(Unknown Source)
> Caused by: java.io.IOException: Failed to get Message Count: queue://(queue name). Reason:
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after
statement closed.
> 	at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:33)
> 	at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:196)
> 	at org.apache.activemq.store.ProxyMessageStore.getMessageCount(ProxyMessageStore.java:83)
> 	at org.apache.activemq.broker.region.cursors.QueueStorePrefetch.getStoreSize(QueueStorePrefetch.java:63)
> 	... 10 more
> Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations
allowed after statement closed.
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:888)
> 	at com.mysql.jdbc.Statement.checkClosed(Statement.java:380)
> 	at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:3374)
> 	at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
> 	at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
> 	at org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.doGetMessageCount(DefaultJDBCAdapter.java:700)
> 	at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:192)
> 	... 12 more
> 2009-11-27 07:40:25,086 | WARN  | Close failed: Already closed. | org.apache.activemq.store.jdbc.TransactionContext
| QueueThread:queue://(queue name)
> java.sql.SQLException: Already closed.
> 	at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:84)
> 	at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:181)
> 	at org.apache.activemq.store.jdbc.TransactionContext.close(TransactionContext.java:135)
> 	at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:198)
> 	at org.apache.activemq.store.ProxyMessageStore.getMessageCount(ProxyMessageStore.java:83)
> 	at org.apache.activemq.broker.region.cursors.QueueStorePrefetch.getStoreSize(QueueStorePrefetch.java:63)
> 	at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.remove(AbstractStoreCursor.java:185)
> 	at org.apache.activemq.broker.region.cursors.StoreQueueCursor.remove(StoreQueueCursor.java:141)
> 	at org.apache.activemq.broker.region.Queue.doPageIn(Queue.java:1367)
> 	at org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:1503)
> 	at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1178)
> 	at org.apache.activemq.thread.DeterministicTaskRunner.runTask(DeterministicTaskRunner.java:84)
> 	at org.apache.activemq.thread.DeterministicTaskRunner$1.run(DeterministicTaskRunner.java:41)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> 	at java.lang.Thread.run(Unknown Source)
> 2009-11-27 07:40:25,088 | ERROR | Failed to get message count | org.apache.activemq.broker.region.cursors.QueueStorePrefetch
| QueueThread:queue://(queue name)
> java.io.IOException: Failed to get Message Count: queue://(queue name). Reason: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:
No operations allowed after statement closed.
> 	at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:33)
> 	at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:196)
> 	at org.apache.activemq.store.ProxyMessageStore.getMessageCount(ProxyMessageStore.java:83)
> 	at org.apache.activemq.broker.region.cursors.QueueStorePrefetch.getStoreSize(QueueStorePrefetch.java:63)
> 	at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.remove(AbstractStoreCursor.java:185)
> 	at org.apache.activemq.broker.region.cursors.StoreQueueCursor.remove(StoreQueueCursor.java:141)
> 	at org.apache.activemq.broker.region.Queue.doPageIn(Queue.java:1367)
> 	at org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:1503)
> 	at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1178)
> 	at org.apache.activemq.thread.DeterministicTaskRunner.runTask(DeterministicTaskRunner.java:84)
> 	at org.apache.activemq.thread.DeterministicTaskRunner$1.run(DeterministicTaskRunner.java:41)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> 	at java.lang.Thread.run(Unknown Source)
> Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations
allowed after statement closed.
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:888)
> 	at com.mysql.jdbc.Statement.checkClosed(Statement.java:380)
> 	at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:3374)
> 	at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
> 	at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
> 	at org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.doGetMessageCount(DefaultJDBCAdapter.java:700)
> 	at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:192)
> 	... 12 more
> 2009-11-27 07:40:25,088 | ERROR | Failed to page in more queue messages  | org.apache.activemq.broker.region.Queue
| QueueThread:queue://(queue name)
> java.lang.RuntimeException: java.io.IOException: Failed to get Message Count: queue://(queue
name). Reason: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations
allowed after statement closed.
> 	at org.apache.activemq.broker.region.cursors.QueueStorePrefetch.getStoreSize(QueueStorePrefetch.java:66)
> 	at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.remove(AbstractStoreCursor.java:185)
> 	at org.apache.activemq.broker.region.cursors.StoreQueueCursor.remove(StoreQueueCursor.java:141)
> 	at org.apache.activemq.broker.region.Queue.doPageIn(Queue.java:1367)
> 	at org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:1503)
> 	at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1178)
> 	at org.apache.activemq.thread.DeterministicTaskRunner.runTask(DeterministicTaskRunner.java:84)
> 	at org.apache.activemq.thread.DeterministicTaskRunner$1.run(DeterministicTaskRunner.java:41)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> 	at java.lang.Thread.run(Unknown Source)
> Caused by: java.io.IOException: Failed to get Message Count: queue://(queue name). Reason:
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after
statement closed.
> 	at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:33)
> 	at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:196)
> 	at org.apache.activemq.store.ProxyMessageStore.getMessageCount(ProxyMessageStore.java:83)
> 	at org.apache.activemq.broker.region.cursors.QueueStorePrefetch.getStoreSize(QueueStorePrefetch.java:63)
> 	... 10 more
> Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations
allowed after statement closed.
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:888)
> 	at com.mysql.jdbc.Statement.checkClosed(Statement.java:380)
> 	at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:3374)
> 	at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
> 	at org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
> 	at org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.doGetMessageCount(DefaultJDBCAdapter.java:700)
> 	at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessageCount(JDBCMessageStore.java:192)
> 	... 12 more

--
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

        

Mime
View raw message