Masstransit serialization issue

781 views
Skip to first unread message

alex...@gmail.com

unread,
Aug 29, 2016, 9:21:54 AM8/29/16
to masstransit-discuss
Hello , 
We encountered an issue when tried to consume a an object with serialized exception from rabbitmq.
Masstransit throws a serialization exception related to newtonsoft , and message is returned to queue , only to fail again on next consume.

Is this a known issue , or some error on our end ? 

possibly related to this

Exception:
System.InvalidCastException occurred
Message: A first chance exception of type 'System.InvalidCastException' occurred in mscorlib.dll
Additional information: Unable to cast object of type 'Newtonsoft.Json.Linq.JObject' to type 'System.Runtime.Serialization.ISafeSerializationData'.

Stacktrace: 
  mscorlib.dll!System.Runtime.Serialization.SafeSerializationManager.CompleteDeserialization(object deserializedObject) Unknown
  [Native to Managed Transition]
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonContract.InvokeOnDeserialized(object o, System.Runtime.Serialization.StreamingContext context) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.OnDeserialized(Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonContract contract, object value) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateISerializable(Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonISerializableContract contract, Newtonsoft.Json.Serialization.JsonProperty member, string id) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, object existingValue) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, object existingValue) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateISerializableItem(Newtonsoft.Json.Linq.JToken token, System.Type type, Newtonsoft.Json.Serialization.JsonISerializableContract contract, Newtonsoft.Json.Serialization.JsonProperty member) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonFormatterConverter.Convert(object value, System.Type type) Unknown
  mscorlib.dll!System.Runtime.Serialization.SerializationInfo.GetValue(string name, System.Type type) Unknown
  mscorlib.dll!System.Exception.Exception(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) Unknown
  [Lightweight Function]
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateISerializable(Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonISerializableContract contract, Newtonsoft.Json.Serialization.JsonProperty member, string id) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, object existingValue) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, object existingValue) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(Newtonsoft.Json.Serialization.JsonProperty property, Newtonsoft.Json.JsonConverter propertyConverter, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerProperty, Newtonsoft.Json.JsonReader reader, object target) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(object newObject, Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonObjectContract contract, Newtonsoft.Json.Serialization.JsonProperty member, string id) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, object existingValue) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, object existingValue) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(Newtonsoft.Json.Serialization.JsonProperty property, Newtonsoft.Json.JsonConverter propertyConverter, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerProperty, Newtonsoft.Json.JsonReader reader, object target) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(object newObject, Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonObjectContract contract, Newtonsoft.Json.Serialization.JsonProperty member, string id) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, object existingValue) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, object existingValue) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(Newtonsoft.Json.JsonReader reader, System.Type objectType, bool checkAdditionalContent) Unknown
  Newtonsoft.Json.dll!Newtonsoft.Json.JsonSerializer.DeserializeInternal(Newtonsoft.Json.JsonReader reader, System.Type objectType) Unknown
> MassTransit.dll!MassTransit.Serialization.JsonConsumeContext.TryGetMessage<com.Core2.Messaging.ILogEntryEvent>(out MassTransit.ConsumeContext<com.Core2.Messaging.ILogEntryEvent> message) Unknown
  MassTransit.dll!MassTransit.Context.ConsumeContextProxy.TryGetMessage<com.Core2.Messaging.ILogEntryEvent>(out MassTransit.ConsumeContext<com.Core2.Messaging.ILogEntryEvent> consumeContext) Unknown
  MassTransit.dll!MassTransit.Pipeline.Filters.MessageConsumeFilter<com.Core2.Messaging.ILogEntryEvent>.MassTransit-Pipeline-IFilter<MassTransit-ConsumeContext>-Send() Unknown
  mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<MassTransit.Pipeline.Filters.MessageConsumeFilter<com.Core2.Messaging.ILogEntryEvent>.MassTransit-Pipeline-IFilter<MassTransit-ConsumeContext>-Send>(ref MassTransit.Pipeline.Filters.MessageConsumeFilter<com.Core2.Messaging.ILogEntryEvent>.MassTransit-Pipeline-IFilter<MassTransit-ConsumeContext>-Send stateMachine) Unknown
  MassTransit.dll!MassTransit.Pipeline.Filters.MessageConsumeFilter<com.Core2.Messaging.ILogEntryEvent>.MassTransit.Pipeline.IFilter<MassTransit.ConsumeContext>.Send(MassTransit.ConsumeContext context, MassTransit.Pipeline.IPipe<MassTransit.ConsumeContext> next) Unknown
  System.Core.dll!System.Linq.Enumerable.WhereSelectEnumerableIterator<MassTransit.Pipeline.Filters.MessageTypeConsumeFilter.IMessagePipe,System.Threading.Tasks.Task>.MoveNext() Unknown
  mscorlib.dll!System.Threading.Tasks.Task.WhenAll(System.Collections.Generic.IEnumerable<System.Threading.Tasks.Task> tasks) Unknown
  MassTransit.dll!MassTransit.Pipeline.Filters.RetryFilter.Attempt() Unknown
  mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<MassTransit.Pipeline.Filters.RetryFilter.Attempt>(ref MassTransit.Pipeline.Filters.RetryFilter.Attempt stateMachine) Unknown
  MassTransit.dll!MassTransit.Pipeline.Filters.RetryFilter.Attempt() Unknown
  mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown
  mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown
  mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run() Unknown
  mscorlib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining, ref System.Threading.Tasks.Task currentTask) Unknown
  mscorlib.dll!System.Threading.Tasks.Task.FinishContinuations() Unknown
  mscorlib.dll!System.Threading.Tasks.Task<System.Threading.Tasks.VoidTaskResult>.TrySetResult(System.Threading.Tasks.VoidTaskResult result) Unknown
  mscorlib.dll!System.Threading.Tasks.Task.DelayPromise.Complete() Unknown
  mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown
  mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown
  mscorlib.dll!System.Threading.TimerQueueTimer.CallCallback() Unknown
  mscorlib.dll!System.Threading.TimerQueueTimer.Fire() Unknown
  mscorlib.dll!System.Threading.TimerQueue.FireNextTimers() Unknown


Faulting message :
{

  "messageId": "19a30000-1c95-a048-29cc-08d3d003865e",

  "conversationId": "19a30000-1c95-a048-2a7b-08d3d003865e",

  "sourceAddress": "rabbitmq://localhost:5672/Com/bus-XXYY-Com.HttpGateway.Service-dgtoyyyh1sorty4jbdj7yy4iy5?durable=false&autodelete=true&prefetch=16",

  "destinationAddress": "rabbitmq://localhost:5672/Com/Com.Core2.Messaging:ILogEntryEvent",

  "messageType": [

    "urn:message:Com.Core2.Messaging:ILogEntryEvent",

    "urn:message:Com.Core2.Messaging:ICommandMessage",

    "urn:message:Com.Core2.Messaging:IMessage",

    "urn:message:Com.Core2:INonCachableKey"

  ],

  "message": {

    "logEntryInfo": {

      "eventDate": "2016-08-29T11:56:34.7171609Z",

      "serviceName": "Com.HttpGateway.Service",

      "machineName": "XXYY",

      "logLevel": "ERROR",

      "text": "HTTP POST failed for http://mock.Com/X123/audit with id 4c93c6e6e74c45ed83996c04b5b05846",

      "title": "ERROR in MicroService Com.HttpGateway.Service ",

      "assemblyFileVersion": "1.0.1.82",

      "dataJson": "\"[\\r\\n  {\\r\\n    \\\"Name\\\": \\\"JObject\\\",\\r\\n    \\\"Value\\\": {\\r\\n      \\\"message\\\": \\\"XX\\\",\\r\\n      \\\"request_id\\\": \\\"ea477f0532cc4727bb4acab6a5d5bd80\\\",\\r\\n      \\\"date_created_utc\\\": \\\"8/29/2016 10:24:28 AM\\\",\\r\\n      \\\"customer_tag\\\": \\\"476afa6e-1038-4808-8bbf-86d9d857b8c4\\\",\\r\\n      \\\"callback_url\\\": \\\"http://mock.Com/X123/audit\\\",\\r\\n      \\\"confirm_id\\\": \\\"\\\",\\r\\n      \\\"result_code\\\": \\\"1009\\\",\\r\\n      \\\"result_description\\\": \\\"YY\\\"\\r\\n    }\\r\\n  }\\r\\n]\"",

      "exception": {

        "ClassName": "System.AggregateException",

        "Message": "One or more errors occurred.",

        "Data": null,

        "InnerException": {

          "ClassName": "System.Net.Http.HttpRequestException",

          "Message": "An error occurred while sending the request.",

          "Data": null,

          "InnerException": {

            "ClassName": "System.Net.WebException",

            "Message": "The remote name could not be resolved: 'mock.Com'",

            "Data": null,

            "InnerException": null,

            "HelpURL": null,

            "StackTraceString": "   at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)\r\n   at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)",

            "RemoteStackTraceString": null,

            "RemoteStackIndex": 0,

            "ExceptionMethod": "8\nEndGetRequestStream\nSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Net.HttpWebRequest\nSystem.IO.Stream EndGetRequestStream(System.IAsyncResult, System.Net.TransportContext ByRef)",

            "HResult": -2146233079,

            "Source": "System",

            "WatsonBuckets": null

          },

          "HelpURL": null,

          "StackTraceString": "   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Com.Core2.HttpRequestSender.<PostJsonAsync>d__0.MoveNext() in c:\\Agent1\\_work\\22\\s\\Core\\Com.Core\\Src\\Web\\HttpPostRequestSender.cs:line 36\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   at Com.HttpGateway.Service.HttpSenderClient.<>c__DisplayClass10.<<Post>b__e>d__12.MoveNext() in c:\\Net-Bet\\Workspace2015\\ComV2\\HttpGateway\\1.0.0.0\\Com.HttpGateway.Service\\Src\\Common\\HttpSenderClient.cs:line 139",

          "RemoteStackTraceString": null,

          "RemoteStackIndex": 0,

          "ExceptionMethod": "8\nThrowForNonSuccess\nmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Runtime.CompilerServices.TaskAwaiter\nVoid ThrowForNonSuccess(System.Threading.Tasks.Task)",

          "HResult": -2146233088,

          "Source": "mscorlib",

          "WatsonBuckets": null,

          "SafeSerializationManager": {

            "m_serializedStates": [

              {}

            ]

          },

          "CLR_SafeSerializationManager_RealType": "System.Net.Http.HttpRequestException, System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

        },

        "HelpURL": null,

        "StackTraceString": "   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)\r\n   at System.Threading.Tasks.Task.Wait(TimeSpan timeout)\r\n   at Com.HttpGateway.Service.HttpSenderClient.Post(IHttpPostCommand httpCommand) in c:\\Net-Bet\\Workspace2015\\ComV2\\HttpGateway\\1.0.0.0\\Com.HttpGateway.Service\\Src\\Common\\HttpSenderClient.cs:line 137",

        "RemoteStackTraceString": null,

        "RemoteStackIndex": 0,

        "ExceptionMethod": "8\nWait\nmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Threading.Tasks.Task\nBoolean Wait(Int32, System.Threading.CancellationToken)",

        "HResult": -2146233088,

        "Source": "mscorlib",

        "WatsonBuckets": null,

        "InnerExceptions": [

          {

            "ClassName": "System.Net.Http.HttpRequestException",

            "Message": "An error occurred while sending the request.",

            "Data": null,

            "InnerException": {

              "ClassName": "System.Net.WebException",

              "Message": "The remote name could not be resolved: 'mock.Com'",

              "Data": null,

              "InnerException": null,

              "HelpURL": null,

              "StackTraceString": "   at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)\r\n   at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)",

              "RemoteStackTraceString": null,

              "RemoteStackIndex": 0,

              "ExceptionMethod": "8\nEndGetRequestStream\nSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Net.HttpWebRequest\nSystem.IO.Stream EndGetRequestStream(System.IAsyncResult, System.Net.TransportContext ByRef)",

              "HResult": -2146233079,

              "Source": "System",

              "WatsonBuckets": null

            },

            "HelpURL": null,

            "StackTraceString": "   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Com.Core2.HttpRequestSender.<PostJsonAsync>d__0.MoveNext() in c:\\Agent1\\_work\\22\\s\\Core\\Com.Core\\Src\\Web\\HttpPostRequestSender.cs:line 36\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   at Com.HttpGateway.Service.HttpSenderClient.<>c__DisplayClass10.<<Post>b__e>d__12.MoveNext() in c:\\Net-Bet\\Workspace2015\\ComV2\\HttpGateway\\1.0.0.0\\Com.HttpGateway.Service\\Src\\Common\\HttpSenderClient.cs:line 139",

            "RemoteStackTraceString": null,

            "RemoteStackIndex": 0,

            "ExceptionMethod": "8\nThrowForNonSuccess\nmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Runtime.CompilerServices.TaskAwaiter\nVoid ThrowForNonSuccess(System.Threading.Tasks.Task)",

            "HResult": -2146233088,

            "Source": "mscorlib",

            "WatsonBuckets": null,

            "SafeSerializationManager": {

              "m_serializedStates": [

                {}

              ]

            },

            "CLR_SafeSerializationManager_RealType": "System.Net.Http.HttpRequestException, System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

          }

        ]

      }

    },

    "senderTimeoutInMiliseconds": 30000.0

  },

  "expirationTime": "2016-08-29T12:56:34.7171609Z",

  "headers": {},

  "host": {

    "machineName": "XXYY",

    "processName": "Com.HttpGateway.Service",

    "processId": 58532,

    "assembly": "Com.HttpGateway.Service",

    "assemblyVersion": "1.0.1.11",

    "frameworkVersion": "4.0.30319.34014",

    "massTransitVersion": "3.2.4.557",

    "operatingSystemVersion": "Microsoft Windows NT 6.2.9200.0"

  }

}


Chris Patterson

unread,
Aug 29, 2016, 9:47:52 AM8/29/16
to masstrans...@googlegroups.com
Exceptions can be serialized across the wire which probably explains what you're seeing. 

MassTransit has an ExceptionInfo type that it uses to store and send exception data with fault events. Or you can use your own type.



__
Chris Patterson




--
You received this message because you are subscribed to the Google Groups "masstransit-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to masstransit-dis...@googlegroups.com.
To post to this group, send email to masstrans...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/masstransit-discuss/e53ea248-8e5a-4fa1-9baa-8c51808c54e2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages