You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by ni...@apache.org on 2006/03/27 14:57:31 UTC

svn commit: r389130 - /logging/log4net/trunk/src/Appender/AdoNetAppender.cs

Author: nicko
Date: Mon Mar 27 04:57:23 2006
New Revision: 389130

URL: http://svn.apache.org/viewcvs?rev=389130&view=rev
Log:
Fix for LOG4NET-73. Added code to cleanup the connection and command objects that are stored in members if the InitializeDatabaseConnection method is called multiple times.

Modified:
    logging/log4net/trunk/src/Appender/AdoNetAppender.cs

Modified: logging/log4net/trunk/src/Appender/AdoNetAppender.cs
URL: http://svn.apache.org/viewcvs/logging/log4net/trunk/src/Appender/AdoNetAppender.cs?rev=389130&r1=389129&r2=389130&view=diff
==============================================================================
--- logging/log4net/trunk/src/Appender/AdoNetAppender.cs (original)
+++ logging/log4net/trunk/src/Appender/AdoNetAppender.cs Mon Mar 27 04:57:23 2006
@@ -407,14 +407,30 @@
 		override protected void OnClose() 
 		{
 			base.OnClose();
+
+			// Close the cached command and connection objects
 			if (m_dbCommand != null)
 			{
-				m_dbCommand.Dispose();
+				try
+				{
+					m_dbCommand.Dispose();
+				}
+				catch (Exception ex)
+				{
+					LogLog.Warn("AdoNetAppender: Exception while disposing cached command object", ex);
+				}
 				m_dbCommand = null;
 			}
 			if (m_dbConnection != null)
 			{
-				m_dbConnection.Close();
+				try
+				{
+					m_dbConnection.Close();
+				}
+				catch (Exception ex)
+				{
+					LogLog.Warn("AdoNetAppender: Exception while disposing cached connection object", ex);
+				}
 				m_dbConnection = null;
 			}
 		}
@@ -607,6 +623,32 @@
 		{
 			try
 			{
+				// Cleanup any existing command or connection
+				if (m_dbCommand != null)
+				{
+					try
+					{
+						m_dbCommand.Dispose();
+					}
+					catch (Exception ex)
+					{
+						LogLog.Warn("AdoNetAppender: Exception while disposing cached command object", ex);
+					}
+					m_dbCommand = null;
+				}
+				if (m_dbConnection != null)
+				{
+					try
+					{
+						m_dbConnection.Close();
+					}
+					catch (Exception ex)
+					{
+						LogLog.Warn("AdoNetAppender: Exception while disposing cached connection object", ex);
+					}
+					m_dbConnection = null;
+				}
+
 				// Create the connection object
 				m_dbConnection = (IDbConnection)Activator.CreateInstance(ResolveConnectionType());
 			
@@ -665,6 +707,20 @@
 			{
 				try
 				{
+					// Cleanup any existing command or connection
+					if (m_dbCommand != null)
+					{
+						try
+						{
+							m_dbCommand.Dispose();
+						}
+						catch (Exception ex)
+						{
+							LogLog.Warn("AdoNetAppender: Exception while disposing cached command object", ex);
+						}
+						m_dbCommand = null;
+					}
+
 					// Create the command object
 					m_dbCommand = m_dbConnection.CreateCommand();