[
https://issues.apache.org/jira/browse/AMQ-4619?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13700551#comment-13700551
]
SuoNayi commented on AMQ-4619:
------------------------------
Your client can not ensure if the transaction is successful or not since it
cannot receive a response of the commit request from the broker when fail over
happens.The exception message 'Transaction completion in doubt due to failover'
has told you that the transaction completion is in doubt and now it's up to you
to decide what to do next. You can continue to start a new transaction to
resend messages, but you may see duplicate messages in your consumer.
You can also just ignore it but you may lose messages in the doubt transaction.
> lose messages in Shared File System Master/Slave while swich master to slave
> quickly and many times
> ----------------------------------------------------------------------------------------------------
>
> Key: AMQ-4619
> URL: https://issues.apache.org/jira/browse/AMQ-4619
> Project: ActiveMQ
> Issue Type: Bug
> Components: JMS client, Message Store
> Affects Versions: 5.8.0
> Environment: pc(computer), windows 7(os), Shared File System
> Master/Slave
> Reporter: zachary.zhang
> Labels: security
> Fix For: 5.x
>
> Original Estimate: 72h
> Remaining Estimate: 72h
>
> There are two activemq instance in my pc, they are in Shared File System
> Master/Slave with kahaDB model.
> 1 set up the consumer listener and receive message use failover protocol .
> 2 set up the producer to send message use failover protocol. the message
> total is 6000.
> 3 close the master actviemq , so the slave can replace the master to work.
> repeat the step 3 many times (more than 5) and quickly.
> result:
> 1 the producer will throw exception several times:
> javax.jms.TransactionRolledBackException: Transaction completion in doubt due
> to failover. Forcing rollback of TX:ID:wcmis175-55198-1372489851858-1:1:643
> at
> org.apache.activemq.state.ConnectionStateTracker.restoreTransactions(ConnectionStateTracker.java:231)
> at
> org.apache.activemq.state.ConnectionStateTracker.restore(ConnectionStateTracker.java:169)
> at
> org.apache.activemq.transport.failover.FailoverTransport.restoreTransport(FailoverTransport.java:821)
> at
> org.apache.activemq.transport.failover.FailoverTransport.doReconnect(FailoverTransport.java:996)
> at
> org.apache.activemq.transport.failover.FailoverTransport$2.iterate(FailoverTransport.java:143)
> at
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:129)
> at
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:47)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
> 2 sometimes it will lose messages in consumer side (for example producer send
> 6000 messages ,throw 8 exceptions , the consumer will receive 5998
> messages).I don't know where the lost messages going.
> So ,I think this bug is dangerous if it was really exsit. Someetimes we must
> use failover switch the master and slave,and we don't want to face losing
> messages.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira