akkadotnet / Hyperion

Polymorphic serialization for .NET
Apache License 2.0
277 stars 62 forks source link

NullReferenceException throws when serializing a JObject #72

Open ia64mail opened 6 years ago

ia64mail commented 6 years ago

When JObject is used for messaging then Akka fails to route such messages due to serialization problem.

In my particular case I have a strong typed message class with IDictionary<string, object> property and Akka.Serialization.Hyperion configured as default serializer. At some moment this dictionary may contain JObject. Such messages destroy actor life-cycle due to serialization problem.

I made a test project to illustrate such behavior JObjectSerializationTest.zip

System.NullReferenceException: Object reference not set to an instance of an object.
   at Hyperion.SerializerFactories.DictionarySerializerFactory.<>c__DisplayClass3_0.<BuildSerializer>b__1(Stream stream, Object obj, SerializerSession session)
   at Akka.Serialization.HyperionSerializer.ToBinary(Object obj)
   at JObjectSerializationTest.UnitTest.<>c__DisplayClass1_0.<ShouldBeSerializedByHyperion>b__0(Serializer serializer, Object entity)

Used packages versions

  <package id="Akka" version="1.3.0" targetFramework="net46" />
  <package id="Akka.Serialization.Hyperion" version="1.2.3.43-beta" targetFramework="net46" />
  <package id="Hyperion" version="0.9.2" targetFramework="net46" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net46" />
  <package id="NUnit" version="3.7.1" targetFramework="net46" />
  <package id="System.Collections.Immutable" version="1.3.1" targetFramework="net46" />
pmbanka commented 6 years ago

See https://github.com/akkadotnet/Hyperion/issues/66