diff --git a/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs b/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs
index 26a63263..d4466c22 100644
--- a/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs
+++ b/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs
@@ -1128,6 +1128,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection
serviceHost.SetRequestHandler(ChangeDatabaseRequest.Type, HandleChangeDatabaseRequest, true);
serviceHost.SetRequestHandler(GetConnectionStringRequest.Type, HandleGetConnectionStringRequest, true);
serviceHost.SetRequestHandler(BuildConnectionInfoRequest.Type, HandleBuildConnectionInfoRequest, true);
+ serviceHost.SetRequestHandler(ClearPooledConnectionsRequest.Type, HandleClearPooledConnectionsRequest, true);
serviceHost.SetEventHandler(EncryptionKeysChangedNotification.Type, HandleEncryptionKeysNotificationEvent, false);
}
@@ -1689,6 +1690,24 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection
}
}
+ ///
+ /// Clears all pooled connections from SqlConnection pool, releasing open connection sockets not actively in use.
+ ///
+ /// Request param
+ /// Request Context
+ ///
+ public async Task HandleClearPooledConnectionsRequest(object _, RequestContext requestContext)
+ {
+ // Run a detached task to clear pools in backend.
+ await Task.Factory.StartNew(() => Task.Run(async () => {
+
+ SqlConnection.ClearAllPools();
+
+ Logger.Verbose("Cleared all pooled connections successfully.");
+ await requestContext.SendResult(true);
+ }));
+ }
+
public ConnectionDetails ParseConnectionString(string connectionString)
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectionString);
diff --git a/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/ClearPooledConnectionsRequest.cs b/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/ClearPooledConnectionsRequest.cs
new file mode 100644
index 00000000..97352cf6
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/ClearPooledConnectionsRequest.cs
@@ -0,0 +1,18 @@
+//
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//
+
+using Microsoft.SqlTools.Hosting.Protocol.Contracts;
+
+namespace Microsoft.SqlTools.ServiceLayer.Connection.Contracts
+{
+ ///
+ /// Clear Pooled connectins request
+ ///
+ public class ClearPooledConnectionsRequest
+ {
+ public static readonly
+ RequestType