[
https://issues.apache.org/jira/browse/AMQNET-503?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jim Gomes resolved AMQNET-503.
------------------------------
Resolution: Fixed
Fix Version/s: 1.7.1
Merged the fix into the trunk and into the 1.7.x branches to prepare for the
1.7.1 release. Updated the separated NMS provider modules to create a new 1.7.x
branch for each that will use the new NMS 1.7.1 API version.
Thanks to Jose Alvarado for submitting the fix along with the test case and
documentation write-up. Great job!
> DTC Transactions do not respect rollbacks consistently leading to duplicated
> messages
> -------------------------------------------------------------------------------------
>
> Key: AMQNET-503
> URL: https://issues.apache.org/jira/browse/AMQNET-503
> Project: ActiveMQ .Net
> Issue Type: Bug
> Components: ActiveMQ
> Reporter: Jose Alvarado
> Assignee: Jim Gomes
> Fix For: 1.7.1
>
> Attachments: Apache Documentation.docx, Apache.NMS.AMQNETIssue.patch,
> Apache.NMS.ActiveMQ.AMQNETIssue.patch
>
>
> In certain circumstances, rollback does not work properly, as a result
> duplicate messages are generated from normal DTC operations. The
> circumstances under which this issues occurs are:
> - DTC transaction initiated, but fails to commit;
> - Another DTC transaction initiated and successfully commits;
> - When a transaction is roll backed and committed on retry;
> As a result the number of messages sent is larger to the number of messages
> received by the target broker. Some of the messages are not roll backed when
> it fails and they get sent again when committed on retry.
> This issue has been raised in Jira as issues 413 and 472:
> https://issues.apache.org/jira/browse/AMQNET-413
> https://issues.apache.org/jira/browse/AMQNET-472
> Analysing the code we realised that these two issues above are similar, and
> they have the same cause. We have therefore developed a patch based on
> feedback and unit tests provided by those two issues, where we fix the
> problem and we pass all existing unit tests. The changes modify only code
> related to DTC, and it was developed in .NET 2.0 as per the requirements for
> 413/472
> The fix implements the solution suggested in the patch for issue 472 where
> some lock conditions were missing. In addition we have added a condition
> where we will not lock the transaction whenever a distributed transaction
> occurs. The DtcWaitHandle.WaitOne causes DTC transactions involving a
> database or XA transaction to fail unit testing.
> The patch was extensively tested with over a 1000 messages (1K, 1.5K, 10K,
> 100K, 1M) using two brokers across different servers to guarantee distributed
> transactions. Testing also included different message sizes, infrastructure
> setup, databases, and message content verification to validate its integrity
> and ensure messages were not duplicated.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)