activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jgo...@apache.org
Subject svn commit: r1294890 - /activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Connection.cs
Date Tue, 28 Feb 2012 23:15:40 GMT
Author: jgomes
Date: Tue Feb 28 23:15:40 2012
New Revision: 1294890

URL: http://svn.apache.org/viewvc?rev=1294890&view=rev
Log:
Trigger the fault tolerant recovery logic when a connection exception occurs.

Modified:
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Connection.cs

Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Connection.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Connection.cs?rev=1294890&r1=1294889&r2=1294890&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Connection.cs
(original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Connection.cs
Tue Feb 28 23:15:40 2012
@@ -953,14 +953,27 @@ namespace Apache.NMS.ActiveMQ
 
 		internal void OnException(Exception error)
 		{
-			// Will fire an exception listener callback if there's any set.
-			OnAsyncException(error);
+			if(this.transport.IsFaultTolerant)
+			{
+				Tracer.ErrorFormat("Attempting recovery from Exception: {0}", error.Message);
+				while(null != (error = error.InnerException))
+				{
+					Tracer.ErrorFormat("   {0}", error.Message);
+				}
 
-			if(!this.closing.Value && !this.closed.Value)
+				OnTransportInterrupted(this.transport);
+			}
+			else
 			{
-				// Perform the actual work in another thread to avoid lock contention
-				// and allow the caller to continue on in its error cleanup.
-				executor.QueueUserWorkItem(AsyncOnExceptionHandler, error);
+				// Will fire an exception listener callback if there's any set.
+				OnAsyncException(error);
+
+				if(!this.closing.Value && !this.closed.Value)
+				{
+					// Perform the actual work in another thread to avoid lock contention
+					// and allow the caller to continue on in its error cleanup.
+					executor.QueueUserWorkItem(AsyncOnExceptionHandler, error);
+				}
 			}
 		}
 



Mime
View raw message