danielgerlag / danielgerlag/workflow-core

Facing issue to use Mongo as persistance storage

Open
#1,250 2 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.