Uploaded image for project: 'C# Driver'
  1. C# Driver
  2. CSHARP-1238

FindOneAndUpdateAsync fails on deserialization with custom discriminator

    XMLWordPrintableJSON

Details

    • Icon: Task Task
    • Resolution: Done
    • Icon: Major - P3 Major - P3
    • None
    • 2.0
    • Serialization
    • Windows 8.1 x64
      MongoDB version: v2.6.5

    Description

      I have custom discriminator inherited from IDiscriminatorConvention. It adds type discriminator element (i.e. {"_t":8}) to all saved instances.

      FindOneAndUpdateAsync methods throws deserialization exception:

      System.AggregateException : One or more errors occurred.
      ----> MongoDB.Bson.BsonSerializationException : Unknown discriminator value '2'.

      Fluent Find method deserializes instances without any problem respecting my discriminator convention.

      Detailed stack trace:

      System.AggregateException : One or more errors occurred.
        ----> MongoDB.Bson.BsonSerializationException : Unknown discriminator value '2'.
      Result StackTrace:	
      at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
      at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
      at System.Threading.Tasks.Task`1.get_Result()
      at MongoConnect.Extensions.RunSync[T](Task`1 task) in c:\dev\MongoConnectPrev\MongoConnect\MongoConnect\Utl\Extensions.cs:line 14
      at MongoConnect.MongoDbProvider.UpdatePropertyInternal(UpdateOperation op, IPersistentObject obj, String propertyName, Object value) in c:\dev\MongoConnectPrev\MongoConnect\MongoConnect\Providers\MongoDbProvider.cs:line 123
      at MongoConnect.MongoDbProvider.IncrementProperty(IPersistentObject obj, String propertyName, Int32 increment) in c:\dev\MongoConnectPrev\MongoConnect\MongoConnect\Providers\MongoDbProvider.cs:line 93
      at MongoConnect.BaseDataObject.IncrementProperty(String propertyName, Int32 value) in c:\dev\MongoConnectPrev\MongoConnect\MongoConnect\BasicObjects\BaseDataObject.cs:line 229
      at MongoConnect.BaseDataObject.IncrementProperty[T](Expression`1 expression, Int32 value) in c:\dev\MongoConnectPrev\MongoConnect\MongoConnect\BasicObjects\BaseDataObject.cs:line 256
      at MongoConnect.Tests.AtomicUpdateTests.IncrementPropertyTest() in c:\dev\MongoConnectPrev\MongoConnect\MongoConnect.Tests\DB\AtomicUpdateTests.cs:line 31
      --BsonSerializationException
      at MongoDB.Bson.Serialization.BsonSerializer.LookupActualType(Type nominalType, BsonValue discriminator) in d:\jenkins\workspace\mongo-csharp-driver-build\src\MongoDB.Bson\Serialization\BsonSerializer.cs:line 328
      at MongoDB.Bson.Serialization.Conventions.ObjectDiscriminatorConvention.GetActualType(IBsonReader bsonReader, Type nominalType) in d:\jenkins\workspace\mongo-csharp-driver-build\src\MongoDB.Bson\Serialization\Conventions\ObjectDiscriminatorConvention.cs:line 125
      at MongoDB.Bson.Serialization.Serializers.DiscriminatedInterfaceSerializer`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) in d:\jenkins\workspace\mongo-csharp-driver-build\src\MongoDB.Bson\Serialization\Serializers\DiscriminatedInterfaceSerializer.cs:line 80
      at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize[TValue](IBsonSerializer`1 serializer, BsonDeserializationContext context) in d:\jenkins\workspace\mongo-csharp-driver-build\src\MongoDB.Bson\Serialization\IBsonSerializerExtensions.cs:line 48
      at MongoDB.Driver.Core.Operations.ElementDeserializer`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) in d:\jenkins\workspace\mongo-csharp-driver-build\src\MongoDB.Driver.Core\Core\Operations\ElementDeserializer.cs:line 64
      at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize[TValue](IBsonSerializer`1 serializer, BsonDeserializationContext context) in d:\jenkins\workspace\mongo-csharp-driver-build\src\MongoDB.Bson\Serialization\IBsonSerializerExtensions.cs:line 48
      at MongoDB.Driver.Core.Operations.FindAndModifyValueDeserializer`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) in d:\jenkins\workspace\mongo-csharp-driver-build\src\MongoDB.Driver.Core\Core\Operations\FindAndModifyValueDeserializer.cs:line 44
      at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize[TValue](IBsonSerializer`1 serializer, BsonDeserializationContext context) in d:\jenkins\workspace\mongo-csharp-driver-build\src\MongoDB.Bson\Serialization\IBsonSerializerExtensions.cs:line 48
      at MongoDB.Driver.Core.WireProtocol.CommandWireProtocol`1.ProcessReply(ConnectionId connectionId, ReplyMessage`1 reply) in d:\jenkins\workspace\mongo-csharp-driver-build\src\MongoDB.Driver.Core\Core\WireProtocol\CommandWireProtocol.cs:line 104
      at MongoDB.Driver.Core.WireProtocol.CommandWireProtocol`1.<ExecuteAsync>d__0.MoveNext() in d:\jenkins\workspace\mongo-csharp-driver-build\src\MongoDB.Driver.Core\Core\WireProtocol\CommandWireProtocol.cs:line 98
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            kreig Vyacheslav Stroy
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: