danielgerlag / danielgerlag/workflow-core
Facing issue to use Mongo as persistance storage
- Dominant language
- C#
- Stars
- 5.9k
- Forks
- 1.3k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 5
Description
**Describe the bug**
We wanted to use workflow core and we started exploring samples provided with mongo, but while running sample18 we are getting below error:
fail: WorkflowCore.Services.BackgroundTasks.WorkflowConsumer[0]
Error executing item 66065db3c97cfc40cd4a67e8 - An error occurred while deserializing the Data property of class WorkflowCore.Models.WorkflowInstance: Type WorkflowCore.Sample18.MyData is not configured as an allowed type
for this instance of ObjectSerializer.
System.FormatException: An error occurred while deserializing the Data property of class WorkflowCore.Models.WorkflowInstance: Type WorkflowCore.Sample18.MyData is not configured as an allowed type for this instance of ObjectSer
ializer.
---> MongoDB.Bson.BsonSerializationException: Type WorkflowCore.Sample18.MyData is not configured as an allowed type for this instance of ObjectSerializer.
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.DeserializeDiscriminatedValue(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize(IBsonSerializer serializer, BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonSerializer.Deserialize(IBsonReader bsonReader, Type nominalType, Action`1 configurator)
at WorkflowCore.Persistence.MongoDB.Services.DataObjectSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) in C:\Users\vishal.patel\Downloads\workflow-core-master\workflow-core-master\src\
providers\WorkflowCore.Persistence.MongoDB\Services\DataObjectSerializer.cs:line 27
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize(IBsonSerializer serializer, BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
--- End of inner exception stack trace ---
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeClass(BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize[TValue](IBsonSerializer`1 serializer, BsonDeserializationContext context)
at MongoDB.Driver.Core.Operations.CursorBatchDeserializationHelper.DeserializeBatch[TDocument](RawBsonArray batch, IBsonSerializer`1 documentSerializer, MessageEncoderSettings messageEncoderSettings)
at MongoDB.Driver.Core.Operations.FindOperation`1.CreateFirstCursorBatch(BsonDocument cursorDocument)
at MongoDB.Driver.Core.Operations.FindOperation`1.CreateCursor(IChannelSourceHandle channelSource, IChannelHandle channel, BsonDocument commandResult)
at MongoDB.Driver.Core.Operations.FindOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken)
at MongoDB.Driver.Core.Operations.FindOperation`1.ExecuteAsync(IReadBinding binding, CancellationToken cancellationToken)
at MongoDB.Driver.OperationExecutor.ExecuteReadOperationAsync[TResult](IReadBinding binding, IReadOperation`1 operation, CancellationToken cancellationToken)
at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperationAsync[TResult](IClientSessionHandle session, IReadOperation`1 operation, ReadPreference readPreference, CancellationToken cancellationToken)
at MongoDB.Driver.MongoCollectionImpl`1.UsingImplicitSessionAsync[TResult](Func`2 funcAsync, CancellationToken cancellationToken)
at WorkflowCore.Persistence.MongoDB.Services.MongoPersistenceProvider.GetWorkflowInstance(String Id, CancellationToken cancellationToken) in C:\Users\vishal.patel\Downloads\workflow-core-master\workflow-core-master\src\provid
ers\WorkflowCore.Persistence.MongoDB\Services\MongoPersistenceProvider.cs:line 184
at WorkflowCore.Services.BackgroundTasks.WorkflowConsumer.ProcessItem(String itemId, CancellationToken cancellationToken) in C:\Users\vishal.patel\Downloads\workflow-core-master\workflow-core-master\src\WorkflowCore\Services\
BackgroundTasks\WorkflowConsumer.cs:line 46
at WorkflowCore.Services.BackgroundTasks.WorkflowConsumer.ProcessItem(String itemId, CancellationToken cancellationToken) in C:\Users\vishal.patel\Downloads\workflow-core-master\workflow-core-master\src\WorkflowCore\Services\
BackgroundTasks\WorkflowConsumer.cs:line 97
at WorkflowCore.Services.BackgroundTasks.QueueConsumer.ExecuteItem(String itemId, EventWaitHandle waitHandle, Activity activity) in C:\Users\vishal.patel\Downloads\workflow-core-master\workflow-core-master\src\WorkflowCore\Se
rvices\BackgroundTasks\QueueConsumer.cs:line 147
warn: WorkflowCore.Services.BackgroundTasks.IndexConsumer[0]
Error indexing workfow - 66065db3c97cfc40cd4a67e8 - An error occurred while deserializing the Data property of class WorkflowCore.Models.WorkflowInstance: Type WorkflowCore.Sample18.MyData is not configured as an allowed t
ype for this instance of ObjectSerializer.
fail: WorkflowCore.Services.BackgroundTasks.WorkflowConsumer[0]
Error executing item 66065db3c97cfc40cd4a67e8 - An error occurred while deserializing the Data property of class WorkflowCore.Models.WorkflowInstance: Type WorkflowCore.Sample18.MyData is not configured as an allowed type
for this instance of ObjectSerializer.
System.FormatException: An error occurred while deserializing the Data property of class WorkflowCore.Models.WorkflowInstance: Type WorkflowCore.Sample18.MyData is not configured as an allowed type for this instance of ObjectSer
ializer.
---> MongoDB.Bson.BsonSerializationException: Type WorkflowCore.Sample18.MyData is not configured as an allowed type for this instance of ObjectSerializer.
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.DeserializeDiscriminatedValue(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize(IBsonSerializer serializer, BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonSerializer.Deserialize(IBsonReader bsonReader, Type nominalType, Action`1 configurator)
at WorkflowCore.Persistence.MongoDB.Services.DataObjectSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) in C:\Users\vishal.patel\Downloads\workflow-core-master\workflow-core-master\src\
providers\WorkflowCore.Persistence.MongoDB\Services\DataObjectSerializer.cs:line 27
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize(IBsonSerializer serializer, BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
--- End of inner exception stack trace ---
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeClass(BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize[TValue](IBsonSerializer`1 serializer, BsonDeserializationContext context)
at MongoDB.Driver.Core.Operations.CursorBatchDeserializationHelper.DeserializeBatch[TDocument](RawBsonArray batch, IBsonSerializer`1 documentSerializer, MessageEncoderSettings messageEncoderSettings)
at MongoDB.Driver.Core.Operations.FindOperation`1.CreateFirstCursorBatch(BsonDocument cursorDocument)
at MongoDB.Driver.Core.Operations.FindOperation`1.CreateCursor(IChannelSourceHandle channelSource, IChannelHandle channel, BsonDocument commandResult)
at MongoDB.Driver.Core.Operations.FindOperation`1.ExecuteAsync(RetryableReadContext context, CancellationToken cancellationToken)
at MongoDB.Driver.Core.Operations.FindOperation`1.ExecuteAsync(IReadBinding binding, CancellationToken cancellationToken)
at MongoDB.Driver.OperationExecutor.ExecuteReadOperationAsync[TResult](IReadBinding binding, IReadOperation`1 operation, CancellationToken cancellationToken)
at MongoDB.Driver.MongoCollectionImpl`1.ExecuteReadOperationAsync[TResult](IClientSessionHandle session, IReadOperation`1 operation, ReadPreference readPreference, CancellationToken cancellationToken)
at MongoDB.Driver.MongoCollectionImpl`1.UsingImplicitSessionAsync[TResult](Func`2 funcAsync, CancellationToken cancellationToken)
at WorkflowCore.Persistence.MongoDB.Services.MongoPersistenceProvider.GetWorkflowInstance(String Id, CancellationToken cancellationToken) in C:\Users\vishal.patel\Downloads\workflow-core-master\workflow-core-master\src\provid
ers\WorkflowCore.Persistence.MongoDB\Services\MongoPersistenceProvider.cs:line 184
at WorkflowCore.Services.BackgroundTasks.WorkflowConsumer.ProcessItem(String itemId, CancellationToken cancellationToken) in C:\Users\vishal.patel\Downloads\workflow-core-master\workflow-core-master\src\WorkflowCore\Services\
BackgroundTasks\WorkflowConsumer.cs:line 46
at WorkflowCore.Services.BackgroundTasks.WorkflowConsumer.ProcessItem(String itemId, CancellationToken cancellationToken) in C:\Users\vishal.patel\Downloads\workflow-core-master\workflow-core-master\src\WorkflowCore\Services\
BackgroundTasks\WorkflowConsumer.cs:line 97
at WorkflowCore.Services.BackgroundTasks.QueueConsumer.ExecuteItem(String itemId, EventWaitHandle waitHandle, Activity activity) in C:\Users\vishal.patel\Downloads\workflow-core-master\workflow-core-master\src\WorkflowCore\Se
rvices\BackgroundTasks\QueueConsumer.cs:line 147
fail: WorkflowCore.Services.BackgroundTasks.WorkflowConsumer[0]
Error executing item 660651d0b20ace2d4e6197d1 - An error occurred while deserializing the Data property of class WorkflowCore.Models.WorkflowInstance: Unknown discriminator value 'WorkflowCore.Sample04.MyDataClass, Workflo
wCore.Sample04'.
System.FormatException: An error occurred while deserializing the Data property of class WorkflowCore.Models.WorkflowInstance: Unknown discriminator value 'WorkflowCore.Sample04.MyDataClass, WorkflowCore.Sample04'.
---> MongoDB.Bson.BsonSerializationException: Unknown discriminator value 'WorkflowCore.Sample04.MyDataClass, WorkflowCore.Sample04'.
at MongoDB.Bson.Serialization.BsonSerializer.LookupActualType(Type nominalType, BsonValue discriminator)
at MongoDB.Bson.Serialization.Conventions.ObjectDiscriminatorConvention.GetActualType(IBsonReader bsonReader, Type nominalType)
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.DeserializeDiscriminatedValue(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize(IBsonSerializer serializer, BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonSerializer.Deserialize(IBsonReader bsonReader, Type nominalType, Action`1 configurator)
at WorkflowCore.Persistence.MongoDB.Services.DataObjectSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) in C:\Users\vishal.patel\Downloads\workflow-core-master\workflow-core-master\src\
providers\WorkflowCore.Persistence.MongoDB\Services\DataObjectSerializer.cs:line 27
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize(IBsonSerializer serializer, BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
--- End of inner exception stack trace ---
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeClass(BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.Deserialize(BsonDeserializationContext context,
**To Reproduce**
Steps to reproduce the behavior:
Select sample18 project and run it.
**Expected behavior**
Sample18 should run successfully.
**Additional context**
We also tried but that also did not help:
// if (!BsonClassMap.IsClassMapRegistered(typeof(MyData)))
{
BsonClassMap.RegisterClassMap(cm =>
{
cm.AutoMap();
});
}
Contributor guide
No contributing guide indexed for this repository
Research direction
Reproduce the failure by running sample18 with MongoDB, then inspect providers/WorkflowCore.Persistence.MongoDB/Services/DataObjectSerializer.cs at line 27 and MongoPersistenceProvider.cs at line 184. Compare the failing persisted workflow data and serializer behavior, and verify that sample18 workflows can be read and processed without deserialization errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, mongodb
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100