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

Rob Bugh commented on AMQ-1710:
-------------------------------

Forgot to mention the session is transactional. The recreate steps should be 
amended as follows:
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 connections to the broker and on each 
connection creates a transactional session and a consumer with a unique 
clientID. Each client consumes messages from the queue defined above waits 60 
seconds then commits the transaction.

4) Run the app and when the first message is consumed stop the master before 
the commit occurs. 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.

I expected the transaction (and the JMXGroupID) to survive across the failover 
and thus the consumer that retrieves the first message retrieves the seconds 
one as well.

> 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
>         Attachments: 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.

Reply via email to