[jboss-jira] [JBoss JIRA] Commented: (JBAS-6498) JbossMQ Error in committing to JDBC Persistence: message data loss

Bernd Eckenfels (JIRA) jira-events at lists.jboss.org
Thu Feb 12 12:59:44 EST 2009


    [ https://jira.jboss.org/jira/browse/JBAS-6498?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12452430#action_12452430 ] 

Bernd Eckenfels commented on JBAS-6498:
---------------------------------------

Basically the same Exception also happens to the next JDBC Interaction (removeTX).

Interestingly I see the txid in the TRANSACTIONS table as well as the message itself (msgid 53, TXOP=D, txid=233)

I think that specific case (besides retrying) would also be able to be ignored (when the message remove succeeded).

18:52:35,276 WARN  [TransactionImpl] XAException: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=eckenfels01/19367, B
ranchQual=, localId=19367] errorCode=XAER_RMFAIL
org.jboss.mq.SpyXAException: Resource manager error during commit; - nested throwable: (org.jboss.mq.SpyJMSException: Co
uld not commit tx: 1090; - nested throwable: (java.sql.SQLException: this is a FAKE ERROR 8801))
        at org.jboss.mq.SpyXAException.getAsXAException(SpyXAException.java:72)
        at org.jboss.mq.SpyXAResource.commit(SpyXAResource.java:92)
        at org.jboss.tm.TransactionImpl$Resource.commit(TransactionImpl.java:2253)
        at org.jboss.tm.TransactionImpl.commitResources(TransactionImpl.java:1784)
        at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:358)
        at org.jboss.tm.TxManager.commit(TxManager.java:240)
        at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:351)
        at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:906)
        at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170)
        at org.jboss.mq.SpySession.run(SpySession.java:323)
        at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:194)
        at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
        at java.lang.Thread.run(Thread.java:595)
Caused by: org.jboss.mq.SpyJMSException: Could not commit tx: 1090; - nested throwable: (java.sql.SQLException: this is
a FAKE ERROR 8801)
        at org.jboss.mq.pm.jdbc2.PersistenceManager.commitPersistentTx(PersistenceManager.java:891)
        at org.jboss.mq.pm.Tx.commit(Tx.java:207)
        at org.jboss.mq.pm.TxManager.commitTx(TxManager.java:159)
        at org.jboss.mq.server.JMSDestinationManager.transact(JMSDestinationManager.java:518)
        at org.jboss.mq.server.JMSServerInterceptorSupport.transact(JMSServerInterceptorSupport.java:126)
        at org.jboss.mq.security.ServerSecurityInterceptor.transact(ServerSecurityInterceptor.java:197)
        at org.jboss.mq.server.TracingInterceptor.transact(TracingInterceptor.java:352)
        at org.jboss.mq.server.JMSServerInvoker.transact(JMSServerInvoker.java:132)
        at org.jboss.mq.il.jvm.JVMServerIL.transact(JVMServerIL.java:175)
        at org.jboss.mq.Connection.send(Connection.java:1110)
        at org.jboss.mq.SpyXAResourceManager.commit(SpyXAResourceManager.java:185)
        at org.jboss.mq.SpyXAResource.commit(SpyXAResource.java:88)
        ... 11 more
Caused by: java.sql.SQLException: this is a FAKE ERROR 8801
        at net.sf.log4jdbc.StatementSpy._reportSql(StatementSpy.java:312)
        at net.sf.log4jdbc.StatementSpy.reportSql(StatementSpy.java:300)
        at net.sf.log4jdbc.PreparedStatementSpy.executeUpdate(PreparedStatementSpy.java:1002)
        at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:251)
        at org.jboss.mq.pm.jdbc2.PersistenceManager.removeTXRecord(PersistenceManager.java:974)
        at org.jboss.mq.pm.jdbc2.PersistenceManager.commitPersistentTx(PersistenceManager.java:885)
        ... 22 more

> JbossMQ Error in committing to JDBC Persistence: message data loss
> ------------------------------------------------------------------
>
>                 Key: JBAS-6498
>                 URL: https://jira.jboss.org/jira/browse/JBAS-6498
>             Project: JBoss Application Server
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: JMS (JBossMQ)
>    Affects Versions: JBossAS-4.0.5.GA, JBossAS-4.2.3.GA
>         Environment: JBoss running with JRE 1.6 and 1.5 with Oracle Thin Drivers on Various OS
>            Reporter: Bernd Eckenfels
>            Assignee: Adrian Brock
>
> In the seldom case of JDBC Errors the JDBC Provider seems to
> a) error in the XA commit
> b) fail to delete a pending message in table, but message is dequeued from MessageCache (and delivers it again only after restart)
> c) does not retry the JDBC statement 
> This is a problem which happens on a few highly loaded systems, in order to reproduce it better, we used a fake JDBC driver to inject errors (same configuration as the last Bug but for different JDBC Statements of JBossMQ)
> So here is a sample stack trace of a failed commit (i.e. a Message Driven Bean modified a CMP as well as sent a transacted JMS MEssage via RA). The commit of the transacted sent failed at the first DB PRoblem (is not retried or "ignored").
> We think ignoring the exception might cause duplicate deliveries after restart, however it would be the better behaviour. Even better is retrying it at least once before giving up.
> 13:44:17,933 WARN  [TransactionImpl] XAException: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=eckenfels01/2387, Br
> anchQual=, localId=2387] errorCode=XAER_RMFAIL
> org.jboss.mq.SpyXAException: Resource manager error during commit; - nested throwable: (org.jboss.mq.SpyJMSException: Co
> uld not commit tx: 233; - nested throwable: (java.sql.SQLException: this is a FAKE ERROR 2001))
>         at org.jboss.mq.SpyXAException.getAsXAException(SpyXAException.java:72)
>         at org.jboss.mq.SpyXAResource.commit(SpyXAResource.java:92)
>         at org.jboss.tm.TransactionImpl$Resource.commit(TransactionImpl.java:2253)
>         at org.jboss.tm.TransactionImpl.commitResources(TransactionImpl.java:1784)
>         at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:358)
>         at org.jboss.tm.TxManager.commit(TxManager.java:240)
>         at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:351)
>         at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:906)
>         at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170)
>         at org.jboss.mq.SpySession.run(SpySession.java:323)
>         at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:194)
>         at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
>         at java.lang.Thread.run(Thread.java:595)
> Caused by: org.jboss.mq.SpyJMSException: Could not commit tx: 233; - nested throwable: (java.sql.SQLException: this is a
>  FAKE ERROR 2001)
>         at org.jboss.mq.pm.jdbc2.PersistenceManager.commitPersistentTx(PersistenceManager.java:891)
>         at org.jboss.mq.pm.Tx.commit(Tx.java:207)
>         at org.jboss.mq.pm.TxManager.commitTx(TxManager.java:159)
>         at org.jboss.mq.server.JMSDestinationManager.transact(JMSDestinationManager.java:518)
>         at org.jboss.mq.server.JMSServerInterceptorSupport.transact(JMSServerInterceptorSupport.java:126)
>         at org.jboss.mq.security.ServerSecurityInterceptor.transact(ServerSecurityInterceptor.java:197)
>         at org.jboss.mq.server.TracingInterceptor.transact(TracingInterceptor.java:352)
>         at org.jboss.mq.server.JMSServerInvoker.transact(JMSServerInvoker.java:132)
>         at org.jboss.mq.il.jvm.JVMServerIL.transact(JVMServerIL.java:175)
>         at org.jboss.mq.Connection.send(Connection.java:1110)
>         at org.jboss.mq.SpyXAResourceManager.commit(SpyXAResourceManager.java:185)
>         at org.jboss.mq.SpyXAResource.commit(SpyXAResource.java:88)
>         ... 11 more
> Caused by: java.sql.SQLException: this is a FAKE ERROR 2001
>         at net.sf.log4jdbc.StatementSpy._reportSql(StatementSpy.java:312)
>         at net.sf.log4jdbc.StatementSpy.reportSql(StatementSpy.java:300)
>         at net.sf.log4jdbc.PreparedStatementSpy.executeUpdate(PreparedStatementSpy.java:1002)
>         at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:251)
>         at org.jboss.mq.pm.jdbc2.PersistenceManager.removeMarkedMessages(PersistenceManager.java:919)
>         at org.jboss.mq.pm.jdbc2.PersistenceManager.commitPersistentTx(PersistenceManager.java:884)
>         ... 22 more

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list