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

A-MQ throws incorrect exception type when MDB uses bean managed transaction and the transaction is rolled back in TCK tests

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Do
    • Icon: Blocker Blocker
    • None
    • JBoss A-MQ 6.2, JBoss A-MQ 6.2.1
    • None
    • None

      TCK tests with A-MQ 6.2.0 and A-MQ 6.2.1 with EAP 7.0.0.ER4 (issue is valid for both A-MQ versions).

      Resource adapters used:
      A-MQ 6.2.0 - activemq-rar-5.11.0.rar
      A-MQ 6.2.1 - activemq-rar-5.11.0.redhat-621084.rar

      When MDB is using bean managed transaction (UserTransaction) and calls getRolledBack or setRolledBack on MessageDrivenContext or calls begin() twice on the transaction, incorrect exception type is thrown.

      Exception thrown in all cases:

      \u001b[0m\u001b[0m08:50:49,878 INFO  [stdout] (Thread-63) 01-18-2016 08:50:49:  SVR-ERROR: javax.jms.IllegalStateException: The Session is closed
      \u001b[0m\u001b[0m08:50:49,878 INFO  [stdout] (Thread-63) 	at org.apache.activemq.ra.ManagedSessionProxy.getSession(ManagedSessionProxy.java:99)
      \u001b[0m\u001b[0m08:50:49,879 INFO  [stdout] (Thread-63) 	at org.apache.activemq.ra.ManagedSessionProxy.createSender(ManagedSessionProxy.java:370)
      \u001b[0m\u001b[0m08:50:49,880 INFO  [stdout] (Thread-63) 	at org.apache.activemq.ActiveMQQueueSession.createSender(ActiveMQQueueSession.java:242)
      \u001b[0m\u001b[0m08:50:49,880 INFO  [stdout] (Thread-63) 	at com.sun.ts.tests.jms.common.JmsUtil.sendTestResults(JmsUtil.java:215)
      \u001b[0m\u001b[0m08:50:49,880 INFO  [stdout] (Thread-63) 	at com.sun.ts.tests.jms.ee.mdb.mdb_exceptQ.MsgBean.runGetRollbackOnlyBMT(MsgBean.java:120)
      \u001b[0m\u001b[0m08:50:49,880 INFO  [stdout] (Thread-63) 	at com.sun.ts.tests.jms.ee.mdb.mdb_exceptQ.MsgBean.runTests(MsgBean.java:43)
      \u001b[0m\u001b[0m08:50:49,881 INFO  [stdout] (Thread-63) 	at com.sun.ts.tests.jms.common.ParentMsgBeanNoTx.onMessage(ParentMsgBeanNoTx.java:122)
      \u001b[0m\u001b[0m08:50:49,881 INFO  [stdout] (Thread-63) 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      \u001b[0m\u001b[0m08:50:49,881 INFO  [stdout] (Thread-63) 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      \u001b[0m\u001b[0m08:50:49,881 INFO  [stdout] (Thread-63) 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      \u001b[0m\u001b[0m08:50:49,881 INFO  [stdout] (Thread-63) 	at java.lang.reflect.Method.invoke(Method.java:497)
      \u001b[0m\u001b[0m08:50:49,881 INFO  [stdout] (Thread-63) 	at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)
      \u001b[0m\u001b[0m08:50:49,881 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,881 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43)
      \u001b[0m\u001b[0m08:50:49,882 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,882 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.tx.EjbBMTInterceptor.handleInvocation(EjbBMTInterceptor.java:103)
      \u001b[0m\u001b[0m08:50:49,882 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.tx.BMTInterceptor.processInvocation(BMTInterceptor.java:58)
      \u001b[0m\u001b[0m08:50:49,882 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,882 INFO  [stdout] (Thread-63) 	at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45)
      \u001b[0m\u001b[0m08:50:49,882 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,882 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
      \u001b[0m\u001b[0m08:50:49,882 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,883 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
      \u001b[0m\u001b[0m08:50:49,883 INFO  [stdout] (Thread-63) 	at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52)
      \u001b[0m\u001b[0m08:50:49,883 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,883 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)
      \u001b[0m\u001b[0m08:50:49,883 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,883 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
      \u001b[0m\u001b[0m08:50:49,883 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,883 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43)
      \u001b[0m\u001b[0m08:50:49,883 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,884 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100)
      \u001b[0m\u001b[0m08:50:49,884 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,884 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
      \u001b[0m\u001b[0m08:50:49,884 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,884 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.deployment.processors.EjbSuspendInterceptor.processInvocation(EjbSuspendInterceptor.java:53)
      \u001b[0m\u001b[0m08:50:49,884 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,884 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:66)
      \u001b[0m\u001b[0m08:50:49,884 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,885 INFO  [stdout] (Thread-63) 	at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
      \u001b[0m\u001b[0m08:50:49,885 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,885 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54)
      \u001b[0m\u001b[0m08:50:49,886 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,887 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponentDescription$5$1.processInvocation(MessageDrivenComponentDescription.java:239)
      \u001b[0m\u001b[0m08:50:49,887 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,887 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64)
      \u001b[0m\u001b[0m08:50:49,887 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,887 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
      \u001b[0m\u001b[0m08:50:49,887 INFO  [stdout] (Thread-63) 	at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:636)
      \u001b[0m\u001b[0m08:50:49,887 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
      \u001b[0m\u001b[0m08:50:49,888 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,888 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
      \u001b[0m\u001b[0m08:50:49,888 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
      \u001b[0m\u001b[0m08:50:49,888 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,888 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
      \u001b[0m\u001b[0m08:50:49,888 INFO  [stdout] (Thread-63) 	at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:195)
      \u001b[0m\u001b[0m08:50:49,888 INFO  [stdout] (Thread-63) 	at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:185)
      \u001b[0m\u001b[0m08:50:49,888 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
      \u001b[0m\u001b[0m08:50:49,889 INFO  [stdout] (Thread-63) 	at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
      \u001b[0m\u001b[0m08:50:49,889 INFO  [stdout] (Thread-63) 	at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:73)
      \u001b[0m\u001b[0m08:50:49,889 INFO  [stdout] (Thread-63) 	at com.sun.ts.tests.jms.ee.mdb.mdb_exceptQ.MsgBean$$$view2.onMessage(Unknown Source)
      \u001b[0m\u001b[0m08:50:49,889 INFO  [stdout] (Thread-63) 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      \u001b[0m\u001b[0m08:50:49,889 INFO  [stdout] (Thread-63) 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      \u001b[0m\u001b[0m08:50:49,889 INFO  [stdout] (Thread-63) 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      \u001b[0m\u001b[0m08:50:49,889 INFO  [stdout] (Thread-63) 	at java.lang.reflect.Method.invoke(Method.java:497)
      \u001b[0m\u001b[0m08:50:49,889 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.doInvoke(MessageEndpointInvocationHandler.java:139)
      \u001b[0m\u001b[0m08:50:49,889 INFO  [stdout] (Thread-63) 	at org.jboss.as.ejb3.inflow.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:73)
      \u001b[0m\u001b[0m08:50:49,890 INFO  [stdout] (Thread-63) 	at com.sun.ts.tests.jms.ee.mdb.mdb_exceptQ.MsgBean$$$endpoint2.onMessage(Unknown Source)
      \u001b[0m\u001b[0m08:50:49,890 INFO  [stdout] (Thread-63) 	at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:123)
      \u001b[0m\u001b[0m08:50:49,890 INFO  [stdout] (Thread-63) 	at org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:64)
      \u001b[0m\u001b[0m08:50:49,890 INFO  [stdout] (Thread-63) 	at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:1038)
      \u001b[0m\u001b[0m08:50:49,890 INFO  [stdout] (Thread-63) 	at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169)
      \u001b[0m\u001b[0m08:50:49,890 INFO  [stdout] (Thread-63) 	at org.jboss.jca.core.workmanager.WorkWrapper.run(WorkWrapper.java:223)
      \u001b[0m\u001b[0m08:50:49,890 INFO  [stdout] (Thread-63) 	at org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:33)
      \u001b[0m\u001b[0m08:50:49,890 INFO  [stdout] (Thread-63) 	at org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:808)
      \u001b[0m\u001b[0m08:50:49,890 INFO  [stdout] (Thread-63) 	at org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:45)
      \u001b[0m\u001b[0m08:50:49,891 INFO  [stdout] (Thread-63) 	at org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:828)
      \u001b[0m\u001b[0m08:50:49,891 INFO  [stdout] (Thread-63) 	at java.lang.Thread.run(Thread.java:745)
      \u001b[0m\u001b[0m08:50:49,891 INFO  [stdout] (Thread-63) 	at org.jboss.threads.JBossThread.run(JBossThread.java:320)
      

      Example of the test failing:

      UserTransaction ut = mdc.getUserTransaction();
      ut.begin()
      
      if (mdc.getRollbackOnly()) {};
      
      ut.rollback();
      

      The code above throws javax.jms.IllegalStateException instead of expected java.lang.IllegalStateException

      Alternative tests with same issue: calling mdb.setRollbackOnly(), calling ut.begin() twice

      Affected tests from TCK module jms/ee/mdb:

      [javatest.batch] FAILED........com/sun/ts/tests/jms/ee/mdb/mdb_exceptQ/MDBClient.java#Test1
      [javatest.batch] FAILED........com/sun/ts/tests/jms/ee/mdb/mdb_exceptQ/MDBClient.java#Test15
      [javatest.batch] FAILED........com/sun/ts/tests/jms/ee/mdb/mdb_exceptQ/MDBClient.java#Test2
      [javatest.batch] FAILED........com/sun/ts/tests/jms/ee/mdb/mdb_exceptT/MDBClient.java#Test1
      [javatest.batch] FAILED........com/sun/ts/tests/jms/ee/mdb/mdb_exceptT/MDBClient.java#Test13
      [javatest.batch] FAILED........com/sun/ts/tests/jms/ee/mdb/mdb_exceptT/MDBClient.java#Test2
      

              Unassigned Unassigned
              msvehla@redhat.com Martin Svehla
              Martin Svehla Martin Svehla
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: