[jboss-jira] [JBoss JIRA] (JBMESSAGING-1926) Root cause of XAException.XA_RBCOMMFAIL is never logged

Duncan Doyle (JIRA) jira-events at lists.jboss.org
Wed Jun 20 12:27:12 EDT 2012


Duncan Doyle created JBMESSAGING-1926:
-----------------------------------------

             Summary: Root cause of XAException.XA_RBCOMMFAIL is never logged
                 Key: JBMESSAGING-1926
                 URL: https://issues.jboss.org/browse/JBMESSAGING-1926
             Project: JBoss Messaging
          Issue Type: Feature Request
          Components: Messaging Core
    Affects Versions: 1.4.7.GA
         Environment: RHEL5, JBoss SOA-P 5.1.0
            Reporter: Duncan Doyle


I'm analyzing a SOA-P 5.1 environment which throws a lot JBoss Messaging and transaction related errors, as shown here:
{code}
2012-06-20 06:22:38,711 WARN  [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.preparefailed] [com.arjuna.ats.internal.jta.resources.arjunacore.preparefailed] XAResourceRecord.prepare - prepare failed with exception XAException.XA_RBCOMMFAIL

2012-06-20 06:22:38,711 WARN  [com.arjuna.ats.arjuna.logging.arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.BasicAction_36] - BasicAction.End() - prepare phase of action-id -53ebcdb1:90b3:4fdef890:4817dd failed.

2012-06-20 06:22:38,711 WARN  [com.arjuna.ats.arjuna.logging.arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.BasicAction_38] - Action Aborting

2012-06-20 06:22:38,781 ERROR [org.jboss.resource.adapter.jms.inflow.JmsServerSession] Unexpected error delivering message delegator->JBossMessage[9210846958925290816]:PERSISTENT, deliveryId=95776

java.lang.reflect.UndeclaredThrowableException

                             at $Proxy1353.onMessage(Unknown Source)

                             at org.jboss.resource.adapter.jms.inflow.JmsServerSession.onMessage(JmsServerSession.java:179)

                             at org.jboss.jms.client.container.ClientConsumer.callOnMessageStatic(ClientConsumer.java:160)

                             at org.jboss.jms.client.container.SessionAspect.handleRun(SessionAspect.java:831)

                             at org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect_z_handleRun_694184137.invoke(SessionAspect_z_handleRun_694184137.java)

                             at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)

                             at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:172)

                             at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)

                             at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)

                             at org.jboss.jms.client.delegate.ClientSessionDelegate.run(ClientSessionDelegate.java)

                             at org.jboss.jms.client.JBossSession.run(JBossSession.java:199)

                             at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:236)

                             at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)

                             at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)

                             at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

                             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

                             at java.lang.Thread.run(Thread.java:662)

Caused by: javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Could not commit transaction.

                             at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1443)

                             at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:137)

                             at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)

                             at org.jboss.soa.esb.listeners.jca.EndpointProxy.endTransaction(EndpointProxy.java:401)

                             at org.jboss.soa.esb.listeners.jca.EndpointProxy.delivery(EndpointProxy.java:281)

                             at org.jboss.soa.esb.listeners.jca.EndpointProxy.invoke(EndpointProxy.java:150)

                             ... 17 more
{code}

The problem I'm facing is that I can see that an XAException.XA_RBCOMMFAIL is thrown, but I can't see the root cause that caused this exception to be thrown.

I've tracked the probable cause back to the ResourceManager.sendTransactionXA(...) method, which, in case that the 'connection.sendTransaction(request, false)' throws a Throwable, creates a MessagingXAException, which wraps the root exception (i.e. the Throwable). This exception propagates back, through ResourceManager.prepare(...) and MessagingXAResource.prepare(...) to XAResourceRecord.topLevelPrepare(...). XAResourceRecord.topLevelPrepare(...) only logs the XA error code (i.e. XA_RBCOMMFAIL), but nowhere in that stack is the actual root-cause logged. This makes it extremely difficult to debug this problem.

In my opinion, the root cause (i.e. the Throwable) should be logged on DEBUG or WARN level by the ResourceManager in ResourceManager.sendTransactionXA(...). This is already done when it catches a JMSSecurityException, but not when it  catches a Throwable.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list