From 625e2a22fa34e2edbe04e308f034f669064c2506 Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Tue, 26 Dec 2017 23:18:47 +0000 Subject: [PATCH] Don't capture AsyncLocals into ODBC Global Timers --- .../System/Data/ProviderBase/DbConnectionFactory.cs | 9 +++++---- .../Common/System/Data/ProviderBase/DbConnectionPool.cs | 8 +++++--- src/System.Data.Odbc/src/System.Data.Odbc.csproj | 3 +++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/System.Data.Odbc/src/Common/System/Data/ProviderBase/DbConnectionFactory.cs b/src/System.Data.Odbc/src/Common/System/Data/ProviderBase/DbConnectionFactory.cs index cdc19e268135..a41ce8f07f2f 100644 --- a/src/System.Data.Odbc/src/Common/System/Data/ProviderBase/DbConnectionFactory.cs +++ b/src/System.Data.Odbc/src/Common/System/Data/ProviderBase/DbConnectionFactory.cs @@ -121,10 +121,11 @@ internal virtual DbConnectionPoolGroupProviderInfo CreateConnectionPoolGroupProv } private Timer CreatePruningTimer() - { - TimerCallback callback = new TimerCallback(PruneConnectionPoolGroups); - return new Timer(callback, null, PruningDueTime, PruningPeriod); - } + => ADP.UnsafeCreateTimer( + new TimerCallback(PruneConnectionPoolGroups), + null, + PruningDueTime, + PruningPeriod); protected DbConnectionOptions FindConnectionOptions(DbConnectionPoolKey key) { diff --git a/src/System.Data.Odbc/src/Common/System/Data/ProviderBase/DbConnectionPool.cs b/src/System.Data.Odbc/src/Common/System/Data/ProviderBase/DbConnectionPool.cs index 6ee71c12e0eb..6dec8d24b536 100644 --- a/src/System.Data.Odbc/src/Common/System/Data/ProviderBase/DbConnectionPool.cs +++ b/src/System.Data.Odbc/src/Common/System/Data/ProviderBase/DbConnectionPool.cs @@ -382,9 +382,11 @@ internal void Clear() } private Timer CreateCleanupTimer() - { - return (new Timer(new TimerCallback(this.CleanupCallback), null, _cleanupWait, _cleanupWait)); - } + => ADP.UnsafeCreateTimer( + new TimerCallback(CleanupCallback), + null, + _cleanupWait, + _cleanupWait); private DbConnectionInternal CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) { diff --git a/src/System.Data.Odbc/src/System.Data.Odbc.csproj b/src/System.Data.Odbc/src/System.Data.Odbc.csproj index 9f9a3db2aa8e..e436c86eddad 100644 --- a/src/System.Data.Odbc/src/System.Data.Odbc.csproj +++ b/src/System.Data.Odbc/src/System.Data.Odbc.csproj @@ -32,6 +32,9 @@ Common\System\Data\Common\AdapterUtil.cs + + System\Data\Common\AdapterUtil.Drivers.cs +