mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-16 18:47:57 -05:00
Throw exception on connection failure to be captured by frontend (#2190)
This commit is contained in:
@@ -158,29 +158,12 @@ namespace Microsoft.SqlTools.Hosting.Protocol
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error($"{requestType.MethodName} : {GetErrorMessage(ex, true)}");
|
||||
await requestContext.SendError(GetErrorMessage(ex));
|
||||
Logger.Error($"{requestType.MethodName} : {ex.GetFullErrorMessage(true)}");
|
||||
await requestContext.SendError(ex.GetFullErrorMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private string GetErrorMessage(Exception e, bool includeStackTrace = false)
|
||||
{
|
||||
List<string> errors = new List<string>();
|
||||
|
||||
while (e != null)
|
||||
{
|
||||
errors.Add(e.Message);
|
||||
if (includeStackTrace)
|
||||
{
|
||||
errors.Add(e.StackTrace);
|
||||
}
|
||||
e = e.InnerException;
|
||||
}
|
||||
|
||||
return errors.Count > 0 ? string.Join(includeStackTrace ? Environment.NewLine : " ---> ", errors) : string.Empty;
|
||||
}
|
||||
|
||||
public void SetEventHandler<TParams>(
|
||||
EventType<TParams> eventType,
|
||||
Func<TParams, EventContext, Task> eventHandler)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.SqlTools.Utility
|
||||
{
|
||||
@@ -77,5 +78,22 @@ namespace Microsoft.SqlTools.Utility
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static string GetFullErrorMessage(this Exception e, bool includeStackTrace = false)
|
||||
{
|
||||
List<string> errors = new List<string>();
|
||||
|
||||
while (e != null)
|
||||
{
|
||||
errors.Add(e.Message);
|
||||
if (includeStackTrace)
|
||||
{
|
||||
errors.Add(e.StackTrace);
|
||||
}
|
||||
e = e.InnerException;
|
||||
}
|
||||
|
||||
return errors.Count > 0 ? string.Join(includeStackTrace ? Environment.NewLine : " ---> ", errors) : string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ using Microsoft.SqlTools.ServiceLayer.Connection;
|
||||
using Microsoft.SqlTools.ServiceLayer.Hosting;
|
||||
using Microsoft.SqlTools.ServiceLayer.Management;
|
||||
using Microsoft.SqlTools.ServiceLayer.Utility;
|
||||
using Microsoft.SqlTools.Utility;
|
||||
|
||||
namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
{
|
||||
@@ -153,6 +154,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
parameters.OwnerUri,
|
||||
out connInfo);
|
||||
|
||||
try
|
||||
{
|
||||
if (connInfo != null)
|
||||
{
|
||||
var serverConnection = ConnectionService.OpenServerConnection(connInfo);
|
||||
@@ -173,6 +176,19 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = ex.Message;
|
||||
Exception exception = ex.InnerException;
|
||||
while (exception != null)
|
||||
{
|
||||
result.ErrorMessage += Environment.NewLine + "\t" + exception.Message;
|
||||
exception = exception.InnerException;
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handle request to get Agent Job history
|
||||
@@ -180,6 +196,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
internal async Task HandleJobHistoryRequest(AgentJobHistoryParams parameters, RequestContext<AgentJobHistoryResult> requestContext)
|
||||
{
|
||||
var result = new AgentJobHistoryResult();
|
||||
try
|
||||
{
|
||||
ConnectionInfo connInfo;
|
||||
ConnectionServiceInstance.TryFindConnection(
|
||||
parameters.OwnerUri,
|
||||
@@ -247,6 +265,19 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = ex.Message;
|
||||
Exception exception = ex.InnerException;
|
||||
while (exception != null)
|
||||
{
|
||||
result.ErrorMessage += Environment.NewLine + "\t" + exception.Message;
|
||||
exception = exception.InnerException;
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handle request to Run a Job
|
||||
@@ -1201,7 +1232,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = e.ToString();
|
||||
result.ErrorMessage = e.GetFullErrorMessage();
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
@@ -1230,7 +1261,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = e.ToString();
|
||||
result.ErrorMessage = e.GetFullErrorMessage();
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
@@ -1251,7 +1282,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = e.ToString();
|
||||
result.ErrorMessage = e.GetFullErrorMessage();
|
||||
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
@@ -1273,7 +1304,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = e.ToString();
|
||||
result.ErrorMessage = e.GetFullErrorMessage();
|
||||
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
@@ -1298,7 +1329,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = e.ToString();
|
||||
result.ErrorMessage = e.GetFullErrorMessage();
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
@@ -1320,7 +1351,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = e.ToString();
|
||||
result.ErrorMessage = e.GetFullErrorMessage();
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
@@ -1343,8 +1374,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = e.ToString();
|
||||
|
||||
result.ErrorMessage = e.GetFullErrorMessage();
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
@@ -1369,8 +1399,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = e.ToString();
|
||||
|
||||
result.ErrorMessage = e.GetFullErrorMessage();
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
@@ -1395,8 +1424,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = e.ToString();
|
||||
|
||||
result.ErrorMessage = e.GetFullErrorMessage();
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
@@ -1420,8 +1448,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Success = false;
|
||||
result.ErrorMessage = e.ToString();
|
||||
|
||||
result.ErrorMessage = e.GetFullErrorMessage();
|
||||
}
|
||||
await requestContext.SendResult(result);
|
||||
}
|
||||
|
||||
@@ -1878,6 +1878,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection
|
||||
/// <param name="connInfo">The connection info to connect with</param>
|
||||
/// <param name="featureName">A plaintext string that will be included in the application name for the connection</param>
|
||||
/// <returns>A SqlConnection created with the given connection info</returns>
|
||||
/// <exception cref="Exception">When an error occurs.</exception>
|
||||
public static SqlConnection OpenSqlConnection(ConnectionInfo connInfo, string featureName = null)
|
||||
{
|
||||
try
|
||||
@@ -1927,9 +1928,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection
|
||||
"Failed opening a SqlConnection: error:{0} inner:{1} stacktrace:{2}",
|
||||
ex.Message, ex.InnerException != null ? ex.InnerException.Message : string.Empty, ex.StackTrace);
|
||||
Logger.Error(error);
|
||||
throw;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -124,9 +124,9 @@ namespace Microsoft.SqlTools.ServiceLayer.LanguageServices
|
||||
&& entry.Key != "groupId" && entry.Key != "password" && entry.Key != "connectionName")
|
||||
{
|
||||
// Boolean values are explicitly labeled true or false instead of undefined.
|
||||
if (entry.Value is bool)
|
||||
if (entry.Value is bool v)
|
||||
{
|
||||
if ((bool)entry.Value)
|
||||
if (v)
|
||||
{
|
||||
key += "_" + entry.Key + ":true";
|
||||
}
|
||||
|
||||
@@ -232,6 +232,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ModelManagement
|
||||
catch (Exception e)
|
||||
{
|
||||
// Exception related to run task will be captured here
|
||||
Logger.Error(e);
|
||||
await requestContext.SendError(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,8 +66,6 @@ namespace Microsoft.SqlTools.ServiceLayer.ServerConfigurations
|
||||
public async Task HandleServerConfigViewRequest(ServerConfigViewRequestParams parameters, RequestContext<ServerConfigViewResponseParams> requestContext)
|
||||
{
|
||||
Logger.Verbose("HandleServerConfigViewRequest");
|
||||
try
|
||||
{
|
||||
ConnectionInfo connInfo;
|
||||
ConnectionServiceInstance.TryFindConnection(
|
||||
parameters.OwnerUri,
|
||||
@@ -86,12 +84,6 @@ namespace Microsoft.SqlTools.ServiceLayer.ServerConfigurations
|
||||
});
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Exception related to run task will be captured here
|
||||
await requestContext.SendError(e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles config update request
|
||||
@@ -102,8 +94,6 @@ namespace Microsoft.SqlTools.ServiceLayer.ServerConfigurations
|
||||
public async Task HandleServerConfigUpdateRequest(ServerConfigUpdateRequestParams parameters, RequestContext<ServerConfigUpdateResponseParams> requestContext)
|
||||
{
|
||||
Logger.Verbose("HandleServerConfigUpdateRequest");
|
||||
try
|
||||
{
|
||||
ConnectionInfo connInfo;
|
||||
ConnectionServiceInstance.TryFindConnection(
|
||||
parameters.OwnerUri,
|
||||
@@ -124,12 +114,6 @@ namespace Microsoft.SqlTools.ServiceLayer.ServerConfigurations
|
||||
await requestContext.SendResult(response);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Exception related to run task will be captured here
|
||||
await requestContext.SendError(e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles config list request
|
||||
@@ -139,8 +123,6 @@ namespace Microsoft.SqlTools.ServiceLayer.ServerConfigurations
|
||||
public async Task HandleServerConfigListRequest(ServerConfigListRequestParams parameters, RequestContext<ServerConfigListResponseParams> requestContext)
|
||||
{
|
||||
Logger.Verbose("HandleServerConfigListRequest");
|
||||
try
|
||||
{
|
||||
ConnectionInfo connInfo;
|
||||
ConnectionServiceInstance.TryFindConnection(
|
||||
parameters.OwnerUri,
|
||||
@@ -160,12 +142,6 @@ namespace Microsoft.SqlTools.ServiceLayer.ServerConfigurations
|
||||
await requestContext.SendResult(response);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Exception related to run task will be captured here
|
||||
await requestContext.SendError(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user