diff --git a/Arbitrer.GRPC/RequestsManager.cs b/Arbitrer.GRPC/RequestsManager.cs index 852edb9..761a3f1 100644 --- a/Arbitrer.GRPC/RequestsManager.cs +++ b/Arbitrer.GRPC/RequestsManager.cs @@ -32,7 +32,6 @@ public class RequestsManager : global::Arbitrer.GRPC.GrpcServices.GrpcServicesBa public RequestsManager(IOptions options, ILogger logger, IServiceProvider provider, IOptions arbitrerOptions, IOptions requestsManagerOptions) { - if (requestsManagerOptions.Value.AcceptMessageTypes.Count == 0) { foreach (var t in arbitrerOptions.Value.LocalTypes) @@ -96,7 +95,12 @@ private async Task ManageGenericArbitrerMessage(RequestMessage reques } catch (Exception ex) { - responseMsg = JsonConvert.SerializeObject(new Messages.ResponseMessage { Exception = ex, Status = Messages.StatusEnum.Exception ,Content = Unit.Value }, + responseMsg = JsonConvert.SerializeObject(new Messages.ResponseMessage + { + Exception = ex, + OriginaStackTrace = ex.StackTrace?.ToString(), + Status = Messages.StatusEnum.Exception, Content = Unit.Value + }, _options.SerializerSettings); _logger.LogError(ex, $"Error executing message of type {typeof(T)} from external service"); } diff --git a/Arbitrer.Kafka/RequestsManager.cs b/Arbitrer.Kafka/RequestsManager.cs index d4ca365..e1662c0 100644 --- a/Arbitrer.Kafka/RequestsManager.cs +++ b/Arbitrer.Kafka/RequestsManager.cs @@ -189,7 +189,12 @@ private async Task ConsumeChannelMessage(string msg) responseMsg = JsonConvert.SerializeObject( new KafkaReply() { - Reply = new Messages.ResponseMessage { Exception = ex, Status = Messages.StatusEnum.Exception , Content = Unit.Value}, + Reply = new Messages.ResponseMessage + { + Exception = ex, + OriginaStackTrace = ex.StackTrace?.ToString(), + Status = Messages.StatusEnum.Exception, Content = Unit.Value + }, CorrelationId = message.CorrelationId } , _options.SerializerSettings); diff --git a/Arbitrer.RabbitMQ/RequestsManager.cs b/Arbitrer.RabbitMQ/RequestsManager.cs index 42ae5ab..e845423 100644 --- a/Arbitrer.RabbitMQ/RequestsManager.cs +++ b/Arbitrer.RabbitMQ/RequestsManager.cs @@ -127,7 +127,7 @@ private async void Watchguard() await CheckRequestsConsumers(CancellationToken.None); await ValidateConnectionQos(CancellationToken.None); } - + torebind.Clear(); await Task.Delay(TimeSpan.FromMinutes(2)); @@ -312,7 +312,12 @@ private async Task ConsumeChannelMessage(object sender, BasicDeliverEventArgs } catch (Exception ex) { - responseMsg = JsonConvert.SerializeObject(new Messages.ResponseMessage { Exception = ex, Status = Messages.StatusEnum.Exception, Content = Unit.Value}, + responseMsg = JsonConvert.SerializeObject(new Messages.ResponseMessage + { + Exception = ex, + OriginaStackTrace = ex.StackTrace?.ToString(), + Status = Messages.StatusEnum.Exception, Content = Unit.Value + }, _options.SerializerSettings); _logger.LogError(ex, $"Error executing message of type {typeof(T)} from external service"); } diff --git a/Arbitrer/Arbitrer.cs b/Arbitrer/Arbitrer.cs index a71e2d9..f6462d6 100644 --- a/Arbitrer/Arbitrer.cs +++ b/Arbitrer/Arbitrer.cs @@ -118,6 +118,7 @@ public async Task InvokeRemoteHandler(TRequest r if (result.Status == Messages.StatusEnum.Exception) { + _logger.LogError($"Remote handler returned an exception: {result.Exception?.Message} at {result.OriginaStackTrace}"); throw result.Exception ?? new Exception("Error executing remote command"); } diff --git a/Arbitrer/messages/ResponseMessage.cs b/Arbitrer/messages/ResponseMessage.cs index 9886faf..1e8cca7 100644 --- a/Arbitrer/messages/ResponseMessage.cs +++ b/Arbitrer/messages/ResponseMessage.cs @@ -13,6 +13,7 @@ public class ResponseMessage public StatusEnum Status { get; set; } public T Content { get; set; } public Exception Exception { get; set; } + public string OriginaStackTrace { get; set; } } @@ -24,6 +25,7 @@ public class ResponseMessage public StatusEnum Status { get; set; } public object Content { get; set; } public Exception Exception { get; set; } + public string OriginaStackTrace { get; set; } } ///