activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Tully (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AMQ-2034) consumer close with active XA transaction results in java.lang.IllegalArgumentException: The subscription does not exist: ...
Date Wed, 14 Jan 2009 12:15:59 GMT

    [ https://issues.apache.org/activemq/browse/AMQ-2034?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=48698#action_48698
] 

Gary Tully commented on AMQ-2034:
---------------------------------

moving the close to session breaks a few unit tests, The TopicTransacted tests. I get 6 failures
& 3 errors on a activemq-core test run.
eg: JmsTopicTransactionTest.testSendSessionClose() verifies that session.close rollbacks the
un committed local transaction, but with the change, the transaction is never committed.
Only registering the sync on close if the transaction is XA resolved the issue. As in, the
transaction is externally controlled so the transaction completion is out of the control of
the session.
It is correct unmanaged JMS behavior so I think the unit tests are correct.
Will this break the tck? 



> consumer close with active XA transaction results in java.lang.IllegalArgumentException:
The subscription does not exist: ...
> -----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-2034
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2034
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.2.0
>         Environment: XA spring-jms consumer.close before XA transaction completion
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>             Fix For: 5.3.0
>
>
> consumer.close removes consumer from broker, later xa transaction commit results in exception
as beforeEnd ack of messages fails with IllegalState:
> {code}
> javax.jms.JMSException: The subscription does not exist: ID:XXXX.dd-52108-1229084857402-0:37:13:1
>         at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
>         at org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1692)
>         at org.apache.activemq.ActiveMQConnection$2$1.run(ActiveMQConnection.java:1637)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)
> Caused by: java.lang.IllegalArgumentException: The subscription does not exist: ID:XXXX.dd-52108-1229084857402-0:37:13:1
>         at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:364)
>         at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:470)
>         at org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)
>         at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73)
>         at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:84)
>         at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:442)
>         at org.apache.activemq.command.MessageAck.visit(MessageAck.java:196)
>         at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:291)
>         at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179)
>         at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
>         at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143)
>         at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206)
>         at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
>         at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:196)
>         at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:183)
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message