You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Timothy Bish (Closed) (JIRA)" <ji...@apache.org> on 2011/09/27 23:10:46 UTC

[jira] [Closed] (AMQ-1248) XA Rollback on redelivery does not work with JBoss 4.0.5 MDB

     [ https://issues.apache.org/jira/browse/AMQ-1248?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Timothy Bish closed AMQ-1248.
-----------------------------

    Resolution: Cannot Reproduce

No test case available.  The 4.x broker line is EOL.  Can reopen if tested against a later broker release and issue is still present.
                
> XA Rollback on redelivery does not work with JBoss 4.0.5 MDB
> ------------------------------------------------------------
>
>                 Key: AMQ-1248
>                 URL: https://issues.apache.org/jira/browse/AMQ-1248
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Connector
>    Affects Versions: 4.1.1, 5.0.0
>         Environment: JDK 1.5.0_10-b03
> JBoss 4.0.5.GA
> ActiveMQ 4.1.1
> ActiveMQ RA 4.1.1
>            Reporter: Matthias Germann
>             Fix For: NEEDS_REVIEWED
>
>         Attachments: activemq-rar-4.1.1.rar.zip, panacya-jms-ds.xml, panacya-mdb-test-1.0.jar
>
>
> I modified the panacya-mdb-test sample  (http://activemq.apache.org/jboss-integration.data/activemq-jboss-test.zip) for testing the message redelivery with a JBoss 4.0.5 MDB and ActiveMQ 4.1.1. I modified the MDB in the sample so thath it throws a RuntimeException if the TextMessage contains the String "error".
> I noticed that the Rollback on a redelivery fails somtetimes with the following exception:
> 11:25:41,843 WARN  [TransactionImpl] XAException: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=LGEMA142/18, BranchQual=, localId=18] errorCode=XAER_RMFAIL
> javax.transaction.xa.XAException: The connection is already closed
>         at org.apache.activemq.TransactionContext.toXAException(TransactionContext.java:619)
>         at org.apache.activemq.TransactionContext.rollback(TransactionContext.java:420)
>         at org.apache.activemq.ra.LocalAndXATransaction.rollback(LocalAndXATransaction.java:127)
>         at org.jboss.tm.TransactionImpl$Resource.rollback(TransactionImpl.java:2277)
>         at org.jboss.tm.TransactionImpl.rollbackResources(TransactionImpl.java:1837)
>         at org.jboss.tm.TransactionImpl.rollback(TransactionImpl.java:412)
>         at org.jboss.tm.TxManager.rollback(TxManager.java:364)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.endTransaction(MessageEndpointInterceptor.java:430)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.finish(MessageEndpointInterceptor.java:308)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.release(MessageEndpointInterceptor.java:166)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.invoke(MessageEndpointInterceptor.java:126)
>         at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74)
>         at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
>         at $Proxy57.release(Unknown Source)
>         at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointDead.enter(MessageEndpointProxy.java:141)
>         at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointState.transition(MessageEndpointProxy.java:99)
>         at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.release(MessageEndpointProxy.java:134)
>         at org.apache.activemq.ra.MessageEndpointProxy.release(MessageEndpointProxy.java:69)
>         at org.apache.activemq.ra.ServerSessionImpl.close(ServerSessionImpl.java:253)
>         at org.apache.activemq.ra.ServerSessionPoolImpl.removeFromPool(ServerSessionPoolImpl.java:185)
>         at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:179)
>         at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
>         at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
>         at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
>         at java.lang.Thread.run(Thread.java:595)
> Caused by: org.apache.activemq.ConnectionClosedException: The connection is already closed
>         at org.apache.activemq.ActiveMQConnection.checkClosed(ActiveMQConnection.java:1245)
>         at org.apache.activemq.ActiveMQConnection.checkClosedOrFailed(ActiveMQConnection.java:1232)
>         at org.apache.activemq.TransactionContext.rollback(TransactionContext.java:404)
>         ... 23 more
> Steps for reproducing the problem:
> 1) unzip activemq-rar-4.1.1.rar.zip into the jboss deploy directory
> 2) copy panacya-jms-ds.xml to the jboss deploy directory
> 3) copy panacya-mdb-test-1.0.jar to the jboss deploy directory
> 4) start activemq
> 5) start jboss
> 6) send a Text Message without error to "queue.testQueue" with jconsole (i.e. "Hello World")
> => delivery should work fine: [SimpleMessageReceiverBean] Message received: Hello World
> 6) send a Text Message containing the text "error" to  "queue.testQueue" with jconsole 
> => in my environment, the first rollback is ok, but the second one fails with javax.transaction.xa.XAException: The connection is already closed
> 11:37:03,171 ERROR [LogInterceptor] TransactionRolledbackLocalException in method: public abstract void javax.jms.MessageListener.onMessage(javax.jms.Message), cause
> dBy:
> java.lang.RuntimeException: ERROR TEST
>         at com.panacya.platform.service.bus.mdb.SimpleMessageReceiverBean.handleMessage(SimpleMessageReceiverBean.java:60)
>         at com.panacya.platform.service.bus.mdb.SimpleMessageReceiverBean.onMessage(SimpleMessageReceiverBean.java:39)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.invocation.Invocation.performCall(Invocation.java:359)
>         at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:495)
>         at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
>         at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:116)
>         at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
>         at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
>         at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350)
>         at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
>         at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:109)
>         at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
>         at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:136)
>         at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:402)
>         at org.jboss.ejb.Container.invoke(Container.java:954)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
>         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
>         at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
>         at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
>         at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
>         at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:169)
>         at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:118)
>         at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:209)
>         at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:195)
>         at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.delivery(MessageEndpointInterceptor.java:263)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.invoke(MessageEndpointInterceptor.java:140)
>         at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74)
>         at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
>         at $Proxy57.onMessage(Unknown Source)
>         at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:121)
>         at org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:61)
>         at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:696)
>         at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:165)
>         at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
>         at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
>         at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
>         at java.lang.Thread.run(Thread.java:595)
> 11:37:03,187 ERROR [ActiveMQSession] error dispatching message:
> javax.ejb.TransactionRolledbackLocalException: ERROR TEST
>         at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:262)
>         at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350)
>         at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
>         at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:109)
>         at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
>         at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:136)
>         at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:402)
>         at org.jboss.ejb.Container.invoke(Container.java:954)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
>         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
>         at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
>         at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
>         at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
>         at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:169)
>         at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:118)
>         at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:209)
>         at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:195)
>         at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.delivery(MessageEndpointInterceptor.java:263)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.invoke(MessageEndpointInterceptor.java:140)
>         at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74)
>         at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
>         at $Proxy57.onMessage(Unknown Source)
>         at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:121)
>         at org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:61)
>         at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:696)
>         at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:165)
>         at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
>         at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
>         at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
>         at java.lang.Thread.run(Thread.java:595)
> Caused by: java.lang.RuntimeException: ERROR TEST
>         at com.panacya.platform.service.bus.mdb.SimpleMessageReceiverBean.handleMessage(SimpleMessageReceiverBean.java:60)
>         at com.panacya.platform.service.bus.mdb.SimpleMessageReceiverBean.onMessage(SimpleMessageReceiverBean.java:39)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.invocation.Invocation.performCall(Invocation.java:359)
>         at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:495)
>         at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
>         at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:116)
>         at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
>         at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
>         ... 34 more
> 11:37:03,187 INFO  [ServerSessionImpl:1] Endpoint failed to process message. Reason: java.lang.RuntimeException: Endpoint after delivery notification failure
> 11:37:03,187 WARN  [TransactionImpl] XAException: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=LGEMA142/16, BranchQual=, localId=16] errorCode=XAER_RMFAIL
> javax.transaction.xa.XAException: The connection is already closed
>         at org.apache.activemq.TransactionContext.toXAException(TransactionContext.java:619)
>         at org.apache.activemq.TransactionContext.setXid(TransactionContext.java:556)
>         at org.apache.activemq.TransactionContext.end(TransactionContext.java:339)
>         at org.apache.activemq.ra.LocalAndXATransaction.end(LocalAndXATransaction.java:90)
>         at org.jboss.tm.TransactionImpl$Resource.endResource(TransactionImpl.java:2143)
>         at org.jboss.tm.TransactionImpl$Resource.endResource(TransactionImpl.java:2118)
>         at org.jboss.tm.TransactionImpl.endResources(TransactionImpl.java:1462)
>         at org.jboss.tm.TransactionImpl.rollback(TransactionImpl.java:411)
>         at org.jboss.tm.TxManager.rollback(TxManager.java:364)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.endTransaction(MessageEndpointInterceptor.java:430)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.finish(MessageEndpointInterceptor.java:308)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.release(MessageEndpointInterceptor.java:166)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.invoke(MessageEndpointInterceptor.java:126)
>         at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74)
>         at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
>         at $Proxy57.release(Unknown Source)
>         at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointDead.enter(MessageEndpointProxy.java:141)
>         at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointState.transition(MessageEndpointProxy.java:99)
>         at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.release(MessageEndpointProxy.java:134)
>         at org.apache.activemq.ra.MessageEndpointProxy.release(MessageEndpointProxy.java:69)
>         at org.apache.activemq.ra.ServerSessionImpl.close(ServerSessionImpl.java:253)
>         at org.apache.activemq.ra.ServerSessionPoolImpl.removeFromPool(ServerSessionPoolImpl.java:185)
>         at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:179)
>         at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
>         at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
>         at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
>         at java.lang.Thread.run(Thread.java:595)
> Caused by: org.apache.activemq.ConnectionClosedException: The connection is already closed
>         at org.apache.activemq.ActiveMQConnection.checkClosed(ActiveMQConnection.java:1245)
>         at org.apache.activemq.ActiveMQConnection.checkClosedOrFailed(ActiveMQConnection.java:1232)
>         at org.apache.activemq.TransactionContext.setXid(TransactionContext.java:553)
>         ... 25 more
> 11:37:03,203 WARN  [TransactionImpl] XAException: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=LGEMA142/16, BranchQual=, localId=16] errorCode=XAER_RMFAIL
> javax.transaction.xa.XAException: The connection is already closed
>         at org.apache.activemq.TransactionContext.toXAException(TransactionContext.java:619)
>         at org.apache.activemq.TransactionContext.rollback(TransactionContext.java:420)
>         at org.apache.activemq.ra.LocalAndXATransaction.rollback(LocalAndXATransaction.java:127)
>         at org.jboss.tm.TransactionImpl$Resource.rollback(TransactionImpl.java:2277)
>         at org.jboss.tm.TransactionImpl.rollbackResources(TransactionImpl.java:1837)
>         at org.jboss.tm.TransactionImpl.rollback(TransactionImpl.java:412)
>         at org.jboss.tm.TxManager.rollback(TxManager.java:364)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.endTransaction(MessageEndpointInterceptor.java:430)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.finish(MessageEndpointInterceptor.java:308)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.release(MessageEndpointInterceptor.java:166)
>         at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.invoke(MessageEndpointInterceptor.java:126)
>         at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74)
>         at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
>         at $Proxy57.release(Unknown Source)
>         at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointDead.enter(MessageEndpointProxy.java:141)
>         at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointState.transition(MessageEndpointProxy.java:99)
>         at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.release(MessageEndpointProxy.java:134)
>         at org.apache.activemq.ra.MessageEndpointProxy.release(MessageEndpointProxy.java:69)
>         at org.apache.activemq.ra.ServerSessionImpl.close(ServerSessionImpl.java:253)
>         at org.apache.activemq.ra.ServerSessionPoolImpl.removeFromPool(ServerSessionPoolImpl.java:185)
>         at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:179)
>         at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
>         at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
>         at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
>         at java.lang.Thread.run(Thread.java:595)
> Caused by: org.apache.activemq.ConnectionClosedException: The connection is already closed
>         at org.apache.activemq.ActiveMQConnection.checkClosed(ActiveMQConnection.java:1245)
>         at org.apache.activemq.ActiveMQConnection.checkClosedOrFailed(ActiveMQConnection.java:1232)
>         at org.apache.activemq.TransactionContext.rollback(TransactionContext.java:404)
>         ... 23 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