You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Dhirendra Rai (JIRA)" <ji...@apache.org> on 2009/02/13 13:00:59 UTC

[jira] Commented: (AMQ-1710) Failing over in JDBC Master/Slave topology does not preserve transaction state

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

Dhirendra Rai commented on AMQ-1710:
------------------------------------

Hi,

I am using Activemq 5.1.0 and using the master slave configuration with shared file system.

Activemq: Exception is appearing for pending requests when master goes down and slave gets up.

ERROR Service - Async error occurred: javax.jms.JMSException: Could not correlate acknowledgment with dispatched message: MessageAck {commandId = 192281, responseRequired = false, ackType = 3, consumerId = ID:mapgl3-49587-1233655489869-0:0:18:1, firstMessageId = null, lastMessageId = ID:mapgl3-49587-1233655489869-0:8:2:1:603, destination = queue://sybase.delivery.queue, transactionId = null, messageCount = 1}

javax.jms.JMSException: Could not correlate acknowledgment with dispatched message: MessageAck {commandId = 192281, responseRequired = false, ackType = 3, consumerId = ID:mapgl3-49587-1233655489869-0:0:18:1, firstMessageId = null, lastMessageId = ID:mapgl3-49587-1233655489869-0:8:2:1:603, destination = queue://sybase.delivery.queue, transactionId = null, messageCount = 1}

        at org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:307)

        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.BrokerFilter.acknowledge(BrokerFilter.java:73)

        at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:84)

        at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:443)

        at org.apache.activemq.command.MessageAck.visit(MessageAck.java:196)

        at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292)

        at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)

        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)

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


> Failing over in JDBC Master/Slave topology does not preserve transaction state
> ------------------------------------------------------------------------------
>
>                 Key: AMQ-1710
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1710
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker, Transport
>    Affects Versions: 4.1.2
>         Environment: Tested on 4.1.1 and 4.1.2
>            Reporter: Rob Bugh
>            Assignee: Rob Davies
>             Fix For: 5.2.0
>
>         Attachments: AMQ-1710.patch, FailoverTest.java
>
>
> Recreate steps:
> 1) Start two brokers in JDBC Master/Slave topology
> 2) Create an app that puts two or more messages in a queue (two messages are sufficient). Give each message a JMXGroupID to force them to go to the same consumer.
> 3) Create another app that creates two connection to the broker and on each connection creates a session and a consumer with a unique clientID. Each should attempt to consume messages from the queue defined above.
> 4) Run the app and when the first message is consumed stop the master. Failover will occur and the slave becomes the new master.
> 5) Notice that when the transport resumes in the client that received the first message an exception like the following is thrown:
>      javax.jms.JMSException: Transaction 'TX:ID:HOSTNAME-3289-1210016021661-0:1:1' has not been started.
> 6) Notice that the second consumer now recieves both messages.

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