#At file:///H:/connector_net/6.0/ based on revid:reggie.burnett@stripped
777 Vladislav Vaintroub 2009-11-25
- Always close connection in MySqlConnection.Dispose(), also when it is
garbage-collected so underlying driver can be reused in the connection pool (bug#31996)
modified:
CHANGES
MySql.Data/Provider/Source/Connection.cs
MySql.Data/Provider/Source/Driver.cs
MySql.Data/Provider/Source/MySqlPool.cs
MySql.Data/Tests/Source/ConnectionTests.cs
=== modified file 'CHANGES'
--- a/CHANGES 2009-11-03 17:56:23 +0000
+++ b/CHANGES 2009-11-25 16:26:35 +0000
@@ -1,3 +1,6 @@
+- Always close connection in MySqlConnection.Dispose(), also when it is
+garbage-collected so underlying driver can be reused in the connection pool (bug#31996)
+
Version 6.0.5
- ensure that MySqlPacket always has a valid encoding. This prevents null reference exceptions in ReadString()
(bug#46844)
=== modified file 'MySql.Data/Provider/Source/Connection.cs'
--- a/MySql.Data/Provider/Source/Connection.cs 2009-11-03 17:56:23 +0000
+++ b/MySql.Data/Provider/Source/Connection.cs 2009-11-25 16:26:35 +0000
@@ -542,7 +542,7 @@ namespace MySql.Data.MySqlClient
protected override void Dispose(bool disposing)
{
- if (disposing && State == ConnectionState.Open)
+ if (State == ConnectionState.Open)
Close();
base.Dispose(disposing);
}
=== modified file 'MySql.Data/Provider/Source/Driver.cs'
--- a/MySql.Data/Provider/Source/Driver.cs 2009-07-12 16:21:45 +0000
+++ b/MySql.Data/Provider/Source/Driver.cs 2009-11-25 16:26:35 +0000
@@ -70,6 +70,7 @@ namespace MySql.Data.MySqlClient
public MySqlConnection Connection
{
get { return connection; }
+ set { connection = value; }
}
public int ThreadID
=== modified file 'MySql.Data/Provider/Source/MySqlPool.cs'
--- a/MySql.Data/Provider/Source/MySqlPool.cs 2009-06-08 15:01:39 +0000
+++ b/MySql.Data/Provider/Source/MySqlPool.cs 2009-11-25 16:26:35 +0000
@@ -168,6 +168,7 @@ namespace MySql.Data.MySqlClient
{
lock ((idlePool as ICollection).SyncRoot)
{
+ driver.Connection = null;
idlePool.Enqueue(driver);
}
}
=== modified file 'MySql.Data/Tests/Source/ConnectionTests.cs'
--- a/MySql.Data/Tests/Source/ConnectionTests.cs 2009-08-31 19:32:51 +0000
+++ b/MySql.Data/Tests/Source/ConnectionTests.cs 2009-11-25 16:26:35 +0000
@@ -366,6 +366,29 @@ namespace MySql.Data.MySqlClient.Tests
}
}
+
+ class ConnectionClosedCheck
+ {
+ public bool closed = false;
+ public void stateChangeHandler(object sender, StateChangeEventArgs e)
+ {
+ if (e.CurrentState == ConnectionState.Closed)
+ closed = true;
+ }
+ }
+ [Test]
+ public void ConnectionCloseByGC()
+ {
+ ConnectionClosedCheck check = new ConnectionClosedCheck();
+ string connStr = GetConnectionString(true);
+ MySqlConnection c = new MySqlConnection(connStr);
+ c.StateChange += new StateChangeEventHandler(check.stateChangeHandler);
+ c.Open();
+ c = null;
+ GC.Collect();
+ GC.WaitForPendingFinalizers();
+ Assert.IsTrue(check.closed);
+ }
/// <summary>
/// Bug #30964 StateChange imperfection
/// </summary>
Attachment: [text/bzr-bundle] bzr/vvaintroub@mysql.com-20091125162635-biq3pbwgoe9mk8f0.bundle
| Thread |
|---|
| • bzr commit into connector-net-6.0 branch (vvaintroub:777) Bug#31996 | Vladislav Vaintroub | 25 Nov |