Uploaded image for project: 'JBoss A-MQ'
  1. JBoss A-MQ
  2. ENTMQ-509

javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction - when re-using UserTransaction

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • JBoss A-MQ 6.1
    • JBoss A-MQ 6.1
    • None
    • None

    Description

      Test (com.sun.ts.tests.jms.ee.ejbweb.xa.TransactionTests.java):
      1. Lookup UserTransaction and call begin()
      2. Send message
      3. Call commit() on UserTransaction
      4. Call begin() on the same UserTransaction
      5. Receive message
      6. Call commit() on the same UserTransactionResult:
      Test fails in step 4. with:| 07:29:52,064 INFO [stdout] (Thread-59) 01-09-2014 07:29:52: SVR-ERROR: javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction.|

      07:29:52,065 INFO [stdout] (Thread-59) at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1177)
      07:29:52,065 INFO [stdout] (Thread-59) at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:126)
      07:29:52,066 INFO [stdout] (Thread-59) at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
      07:29:52,066 INFO [stdout] (Thread-59) at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.commit(ServerVMClientUserTransaction.java:167)
      07:29:52,066 INFO [stdout] (Thread-59) at com.sun.ts.tests.jms.ee.ejbweb.xa.TransactionTests.Test01(TransactionTests.java:264)
      07:29:52,066 INFO [stdout] (Thread-59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      07:29:52,067 INFO [stdout] (Thread-59) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      07:29:52,067 INFO [stdout] (Thread-59) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      07:29:52,067 INFO [stdout] (Thread-59) at java.lang.reflect.Method.invoke(Method.java:597)
      07:29:52,067 INFO [stdout] (Thread-59) at com.sun.ts.lib.harness.EETest.run(EETest.java:495)
      07:29:52,068 INFO [stdout] (Thread-59) at com.sun.ts.lib.harness.ServiceEETest.run(ServiceEETest.java:113)
      07:29:52,068 INFO [stdout] (Thread-59) at com.sun.ts.tests.common.vehicle.ejb.EJBVehicle.runTest(EJBVehicle.java:70)
      07:29:52,068 INFO [stdout] (Thread-59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      07:29:52,068 INFO [stdout] (Thread-59) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      07:29:52,069 INFO [stdout] (Thread-59) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      07:29:52,069 INFO [stdout] (Thread-59) at java.lang.reflect.Method.invoke(Method.java:597)
      07:29:52,069 INFO [stdout] (Thread-59) at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72)
      07:29:52,069 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,070 INFO [stdout] (Thread-59) at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
      07:29:52,070 INFO [stdout] (Thread-59) at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:58)
      07:29:52,070 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,070 INFO [stdout] (Thread-59) at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
      07:29:52,071 INFO [stdout] (Thread-59) at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:58)
      07:29:52,071 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,071 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43)
      07:29:52,072 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,072 INFO [stdout] (Thread-59) at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47)
      07:29:52,072 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,072 INFO [stdout] (Thread-59) at org.jboss.as.jpa.interceptor.SFSBInvocationInterceptor.processInvocation(SFSBInvocationInterceptor.java:58)
      07:29:52,073 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,073 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.tx.StatefulBMTInterceptor.handleInvocation(StatefulBMTInterceptor.java:99)
      07:29:52,075 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.tx.BMTInterceptor.processInvocation(BMTInterceptor.java:56)
      07:29:52,075 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,075 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.component.stateful.StatefulSessionSynchronizationInterceptor.processInvocation(StatefulSessionSynchronizationInterceptor.java:156)
      07:29:52,076 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,076 INFO [stdout] (Thread-59) at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
      07:29:52,076 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,076 INFO [stdout] (Thread-59) at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
      07:29:52,077 INFO [stdout] (Thread-59) at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)
      07:29:52,077 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,077 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.component.stateful.StatefulComponentInstanceInterceptor.processInvocation(StatefulComponentInstanceInterceptor.java:67)
      07:29:52,078 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,078 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.remote.EJBRemoteTransactionPropagatingInterceptor.processInvocation(EJBRemoteTransactionPropagatingInterceptor.java:79)
      07:29:52,078 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,078 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
      07:29:52,080 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,080 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
      07:29:52,080 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,081 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)
      07:29:52,081 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,081 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.component.interceptors.EjbExceptionTransformingInterceptorFactories$1.processInvocation(EjbExceptionTransformingInterceptorFactories.java:65)
      07:29:52,081 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,081 INFO [stdout] (Thread-59) at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
      07:29:52,081 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,082 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:55)
      07:29:52,082 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,082 INFO [stdout] (Thread-59) at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)
      07:29:52,082 INFO [stdout] (Thread-59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      07:29:52,082 INFO [stdout] (Thread-59) at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
      07:29:52,082 INFO [stdout] (Thread-59) at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165)
      07:29:52,082 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.invokeMethod(MethodInvocationMessageHandler.java:329)
      07:29:52,083 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.access$100(MethodInvocationMessageHandler.java:70)
      07:29:52,083 INFO [stdout] (Thread-59) at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler$1.run(MethodInvocationMessageHandler.java:203)
      07:29:52,083 INFO [stdout] (Thread-59) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
      07:29:52,083 INFO [stdout] (Thread-59) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      07:29:52,083 INFO [stdout] (Thread-59) at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      07:29:52,083 INFO [stdout] (Thread-59) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
      07:29:52,084 INFO [stdout] (Thread-59) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
      07:29:52,084 INFO [stdout] (Thread-59) at java.lang.Thread.run(Thread.java:662)
      07:29:52,084 INFO [stdout] (Thread-59) at org.jboss.threads.JBossThread.run(JBossThread.java:122)
      07:29:52,084 INFO [stdout] (Thread-59) Caused by: java.lang.Throwable: setRollbackOnly called from:
      07:29:52,084 INFO [stdout] (Thread-59) at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.setRollbackOnly(TransactionImple.java:313)
      07:29:52,084 INFO [stdout] (Thread-59) at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.markRollbackOnly(TransactionImple.java:1528)
      07:29:52,084 INFO [stdout] (Thread-59) at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.enlistResource(TransactionImple.java:722)
      07:29:52,085 INFO [stdout] (Thread-59) at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.enlistResource(TransactionImple.java:397)
      07:29:52,085 INFO [stdout] (Thread-59) at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener$TransactionSynchronization.enlist(TxConnectionListener.java:607)
      07:29:52,085 INFO [stdout] (Thread-59) at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener.enlist(TxConnectionListener.java:265)
      07:29:52,085 INFO [stdout] (Thread-59) at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.transactionStarted(TxConnectionManagerImpl.java:383)
      07:29:52,085 INFO [stdout] (Thread-59) at org.jboss.jca.core.connectionmanager.ccm.CachedConnectionManagerImpl.userTransactionStarted(CachedConnectionManagerImpl.java:211)
      07:29:52,085 INFO [stdout] (Thread-59) at org.jboss.jca.core.tx.jbossts.UserTransactionListenerImpl.userTransactionStarted(UserTransactionListenerImpl.java:52)
      07:29:52,086 INFO [stdout] (Thread-59) at org.jboss.tm.usertx.UserTransactionRegistry.userTransactionStarted(UserTransactionRegistry.java:119)
      07:29:52,086 INFO [stdout] (Thread-59) at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:146)
      07:29:52,086 INFO [stdout] (Thread-59) at com.sun.ts.tests.jms.ee.ejbweb.xa.TransactionTests.Test01(TransactionTests.java:262)
      07:29:52,086 INFO [stdout] (Thread-59) ... 65 more

      Test srcs, server logs and configuration is attached.Cause: Second call ut.begin() leads to calling start() on XAResource(implemented by TransactionContext) which was used by previous calling ut.start() -> ut.commit(). XAResouce is not disassociated from xid after first successful ut.commit() call. Disassociation of xid is done in XAResource.end() method which seems to be never called.I found some related info in JCA specification 1.5 chapters: 7.6.2.4 "Transaction Association and Calling Protocol" and "7.6.2.5 Unilateral Roll-back"Tested with JBoss A-MQ:
      http://download.eng.bos.redhat.com/brewroot/repos/jb-fuse-6-rhel-6-build/latest/maven/org/jboss/amq/jboss-a-mq/6.1.0.redhat-201/jboss-a-mq-6.1.0.redhat-201.zip\\
      and EAP 6.1.1.GA:
      http://download.eng.rdu2.redhat.com/released/JBEAP-6/6.1.1/jboss-eap-6.1.1.zip

      Attachments

        1. server.log
          2.22 MB
        2. standalone.xml
          157 kB
        3. tck_results.zip
          133 kB
        4. TransactionTests.java
          20 kB

        Activity

          People

            gtully@redhat.com Gary Tully
            mnovak1@redhat.com Miroslav Novak
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: