danielgerlag / danielgerlag/workflow-core

MongoDb provider does not support stand-alone servers after v3.6.5

Open
#1,130 3 comments 1 reaction 0 assignees View on GitHub
Dominant language
C#
Stars
5.9k
Forks
1.3k
Avg merge
1d 1h
Merged PRs (30d)
5

Description

Hi @viktorshevchenko210

After #1079 is merged (release v3.7.0) `WorkflowCore.Persistence.MongoDB` does not allow stand alone MongoDb servers due to addition of transaction support.

Issue in this file : `workflow-core/src/providers/WorkflowCore.Persistence.MongoDB/Services/MongoPersistenceProvider.cs` for method `public async Task PersistWorkflow(WorkflowInstance workflow, List subscriptions, CancellationToken cancellationToken = default)`

### Reproduce:

Persist workflow which contains more than one subscriptions so that `if (subscriptions == null || subscriptions.Count < 1)` is not true.

### Result

The line `session.StartTransaction()` in below method throws:

```c#
public async Task PersistWorkflow(WorkflowInstance workflow, List subscriptions, CancellationToken cancellationToken = default)
{
if (subscriptions == null || subscriptions.Count < 1)
{
await PersistWorkflow(workflow, cancellationToken);
return;
}

using (var session = await _database.Client.StartSessionAsync(cancellationToken: cancellationToken))
{
session.StartTransaction(); //<---- this throws
await PersistWorkflow(workflow, cancellationToken);
await EventSubscriptions.InsertManyAsync(subscriptions, cancellationToken: cancellationToken);
await session.CommitTransactionAsync(cancellationToken);
}
}
```

The exception:
```
System.NotSupportedException: Standalone servers do not support transactions.
at MongoDB.Driver.Core.Bindings.CoreSession.EnsureTransactionsAreSupported()
at MongoDB.Driver.Core.Bindings.CoreSession.EnsureStartTransactionCanBeCalled()
at MongoDB.Driver.Core.Bindings.CoreSession.StartTransaction(TransactionOptions transactionOptions)
at MongoDB.Driver.Core.Bindings.WrappingCoreSession.StartTransaction(TransactionOptions transactionOptions)
at MongoDB.Driver.Core.Bindings.WrappingCoreSession.StartTransaction(TransactionOptions transactionOptions)
at MongoDB.Driver.ClientSessionHandle.StartTransaction(TransactionOptions transactionOptions)
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.