You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2011/02/03 01:19:35 UTC
svn commit: r1066706 -
/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/TransactionContext.cs
Author: tabish
Date: Thu Feb 3 00:19:35 2011
New Revision: 1066706
URL: http://svn.apache.org/viewvc?rev=1066706&view=rev
Log:
Adds more error handling and attempt to better manage failures that occur during the prepare phase.
Modified:
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/TransactionContext.cs
Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/TransactionContext.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/TransactionContext.cs?rev=1066706&r1=1066705&r2=1066706&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/TransactionContext.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/TransactionContext.cs Thu Feb 3 00:19:35 2011
@@ -16,9 +16,7 @@
*/
using System;
-using System.IO;
using System.Text;
-using System.Net;
using System.Transactions;
using System.Collections;
using System.Collections.Generic;
@@ -220,9 +218,9 @@ namespace Apache.NMS.ActiveMQ
this.currentEnlistment =
transaction.EnlistDurable(rmId, this, EnlistmentOptions.None);
- Tracer.Debug("Enlisted in Durable Transaction with RM Id: " + rmId.ToString());
+ Tracer.Debug("Enlisted in Durable Transaction with RM Id: " + rmId);
- System.Transactions.TransactionInformation txInfo = transaction.TransactionInformation;
+ TransactionInformation txInfo = transaction.TransactionInformation;
XATransactionId xaId = new XATransactionId();
this.transactionId = xaId;
@@ -230,7 +228,7 @@ namespace Apache.NMS.ActiveMQ
if(txInfo.DistributedIdentifier != Guid.Empty)
{
xaId.GlobalTransactionId = txInfo.DistributedIdentifier.ToByteArray();
- xaId.BranchQualifier = Encoding.UTF8.GetBytes(txInfo.LocalIdentifier);
+ xaId.BranchQualifier = Encoding.UTF8.GetBytes(Guid.NewGuid().ToString());
}
else
{
@@ -240,7 +238,7 @@ namespace Apache.NMS.ActiveMQ
// Now notify the broker that a new XA'ish transaction has started.
TransactionInfo info = new TransactionInfo();
- info.ConnectionId = this.session.Connection.ConnectionId;
+ info.ConnectionId = this.connection.ConnectionId;
info.TransactionId = this.transactionId;
info.Type = (int) TransactionType.Begin;
@@ -265,9 +263,9 @@ namespace Apache.NMS.ActiveMQ
RecoveryLogger.LogRecoveryInfo(this.transactionId as XATransactionId,
preparingEnlistment.RecoveryInformation());
- // Now notify the broker that a new XA'ish transaction has started.
+ // Inform the broker that work on the XA'sh TX Branch is complete.
TransactionInfo info = new TransactionInfo();
- info.ConnectionId = this.session.Connection.ConnectionId;
+ info.ConnectionId = this.connection.ConnectionId;
info.TransactionId = this.transactionId;
info.Type = (int) TransactionType.End;
@@ -308,7 +306,17 @@ namespace Apache.NMS.ActiveMQ
Tracer.Debug("Transaction Prepare failed with error: " + ex.Message);
AfterRollback();
preparingEnlistment.ForceRollback();
- RecoveryLogger.LogRecovered(this.transactionId as XATransactionId);
+ try
+ {
+ this.connection.OnException(ex);
+ }
+ catch (Exception error)
+ {
+ Tracer.Error(error.ToString());
+ }
+
+ this.currentEnlistment = null;
+ this.transactionId = null;
}
}
@@ -322,7 +330,7 @@ namespace Apache.NMS.ActiveMQ
{
// Now notify the broker that a new XA'ish transaction has completed.
TransactionInfo info = new TransactionInfo();
- info.ConnectionId = this.session.Connection.ConnectionId;
+ info.ConnectionId = this.connection.ConnectionId;
info.TransactionId = this.transactionId;
info.Type = (int) TransactionType.CommitTwoPhase;
@@ -377,7 +385,7 @@ namespace Apache.NMS.ActiveMQ
// Now notify the broker that a new XA'ish transaction has completed.
TransactionInfo info = new TransactionInfo();
- info.ConnectionId = this.session.Connection.ConnectionId;
+ info.ConnectionId = this.connection.ConnectionId;
info.TransactionId = this.transactionId;
info.Type = (int) TransactionType.CommitOnePhase;
@@ -425,7 +433,7 @@ namespace Apache.NMS.ActiveMQ
// Now notify the broker that a new XA'ish transaction has started.
TransactionInfo info = new TransactionInfo();
- info.ConnectionId = this.session.Connection.ConnectionId;
+ info.ConnectionId = this.connection.ConnectionId;
info.TransactionId = this.transactionId;
info.Type = (int) TransactionType.End;
@@ -482,7 +490,7 @@ namespace Apache.NMS.ActiveMQ
// Now notify the broker that Rollback should be performed.
TransactionInfo info = new TransactionInfo();
- info.ConnectionId = this.session.Connection.ConnectionId;
+ info.ConnectionId = this.connection.ConnectionId;
info.TransactionId = this.transactionId;
info.Type = (int)TransactionType.End;