IBatisNet.Common.Utilities.Resources.GetConfigAsXmlDocument(string) doesn't 
attempt to close its XmlTextReader when an exception is thrown while parsing 
the SqlMap.config file
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

         Key: IBATISNET-67
         URL: http://issues.apache.org/jira/browse/IBATISNET-67
     Project: iBatis for .NET
        Type: Bug
    Reporter: Ron Grabowski
 Assigned to: Gilles Bayon 


As of 5/20/2005, if an exception is thrown while trying to parse SqlMap.config 
(note the incorrect closing XML comment tag):

 <!--
  <sqlMap embedded="Resources.SqlMaps.Foo.xml, Company.Project.Data"/>
 ->

the underlying XmlTextReader is not closed. On XP/IIS, the SqlMap.config file 
becomes locked by aspnet_wp.exe and the webserver needs to be restarted. This 
code:

public static XmlDocument GetConfigAsXmlDocument(string fileName)
{
 XmlDocument config = new XmlDocument();
 try 
 {
  XmlTextReader reader = new XmlTextReader(Path.Combine(_baseDirectory, 
fileName));
  config.Load(reader);
  reader.Close(); // <--- NEVER CALLED IF AN EXCEPTION IS THROWN
 }
 catch(Exception e)
 {
  throw new ConfigurationException(
   string.Format("Unable to load config file \"{0}\". Cause : ",
    fileName, 
   e.Message  ) ,e);
 }
 return config;
}

Needs to be changed to this:

public static XmlDocument GetConfigAsXmlDocument(string fileName)
{
 XmlDocument config = new XmlDocument();
 XmlTextReader reader = null;
 try 
 {
  reader = new XmlTextReader(Path.Combine(_baseDirectory, fileName));
  config.Load(reader);
 }
 catch(Exception e)
 {
  throw new ConfigurationException(
   string.Format("Unable to load config file \"{0}\". Cause : ",
    fileName, 
   e.Message  ) ,e);
 }
 finally
 {
  if (reader != null)
  {
   reader.Close();
  }
 }
 return config;
}

I searched all the files in the Common, DataAccess, and DataMapper projects for 
"XmlTextReader" and everything else looks correct.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to