From 27cb8f2f0838d75b83c4489d83d147e1f7cf046e Mon Sep 17 00:00:00 2001 From: Alan Ren Date: Thu, 6 May 2021 17:20:56 -0700 Subject: [PATCH] use new thread to handle requests (#1207) --- .../Connection/ConnectionService.cs | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs b/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs index a1b5cd82..5823fda1 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs @@ -427,8 +427,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection if (!ConnectionService.IsDbPool(connectionInfo.ConnectionDetails.DatabaseName)) { connectionInfo.ConnectionDetails.DatabaseName = connection.Database; - } - + } + if (!string.IsNullOrEmpty(connectionInfo.ConnectionDetails.ConnectionString)) { // If the connection was set up with a connection string, use the connection string to get the details @@ -477,7 +477,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection connectionInfo.MajorVersion = serverInfo.ServerMajorVersion; connectionInfo.IsSqlDb = serverInfo.EngineEditionId == (int)DatabaseEngineEdition.SqlDatabase; connectionInfo.IsSqlDW = (serverInfo.EngineEditionId == (int)DatabaseEngineEdition.SqlDataWarehouse); - connectionInfo.EngineEdition = (DatabaseEngineEdition) serverInfo.EngineEditionId; + connectionInfo.EngineEdition = (DatabaseEngineEdition)serverInfo.EngineEditionId; } catch (Exception ex) { @@ -1048,21 +1048,24 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection /// /// Handle requests to list databases on the current server /// - protected async Task HandleListDatabasesRequest( + protected Task HandleListDatabasesRequest( ListDatabasesParams listDatabasesParams, RequestContext requestContext) { - Logger.Write(TraceEventType.Verbose, "ListDatabasesRequest"); - - try + Task.Run(async () => { - ListDatabasesResponse result = ListDatabases(listDatabasesParams); - await requestContext.SendResult(result); - } - catch (Exception ex) - { - await requestContext.SendError(ex.ToString()); - } + Logger.Write(TraceEventType.Verbose, "ListDatabasesRequest"); + try + { + ListDatabasesResponse result = ListDatabases(listDatabasesParams); + await requestContext.SendResult(result); + } + catch (Exception ex) + { + await requestContext.SendError(ex.ToString()); + } + }); + return Task.CompletedTask; } ///