diff --git a/src/Microsoft.Data.Sqlite.Core/SqliteConnectionFactory.cs b/src/Microsoft.Data.Sqlite.Core/SqliteConnectionFactory.cs index 9e18fddff64..43c10f98d18 100644 --- a/src/Microsoft.Data.Sqlite.Core/SqliteConnectionFactory.cs +++ b/src/Microsoft.Data.Sqlite.Core/SqliteConnectionFactory.cs @@ -20,7 +20,15 @@ internal class SqliteConnectionFactory private Dictionary _poolGroups = new(); protected SqliteConnectionFactory() - => _pruneTimer = new Timer(PruneCallback, null, TimeSpan.FromMinutes(4), TimeSpan.FromSeconds(30)); + { + if (!AppContext.TryGetSwitch("Microsoft.Data.Sqlite.Issue26422", out var enabled) || !enabled) + { + AppDomain.CurrentDomain.DomainUnload += (_, _) => ClearPools(); + AppDomain.CurrentDomain.ProcessExit += (_, _) => ClearPools(); + } + + _pruneTimer = new Timer(PruneCallback, null, TimeSpan.FromMinutes(4), TimeSpan.FromSeconds(30)); + } public SqliteConnectionInternal GetConnection(SqliteConnection outerConnection) {