Skip to content

Commit db455b0

Browse files
committed
Add remove terminated workflows option to RedisPersistenceProvider
1 parent 2148747 commit db455b0

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

src/providers/WorkflowCore.Providers.Redis/ServiceCollectionExtensions.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ public static WorkflowOptions UseRedisLocking(this WorkflowOptions options, stri
1919
return options;
2020
}
2121

22-
public static WorkflowOptions UseRedisPersistence(this WorkflowOptions options, string connectionString, string prefix, bool deleteComplete = false)
22+
public static WorkflowOptions UseRedisPersistence(this WorkflowOptions options, string connectionString, string prefix,
23+
bool deleteComplete = false, bool deleteTerminated = false)
2324
{
24-
options.UsePersistence(sp => new RedisPersistenceProvider(connectionString, prefix, deleteComplete, sp.GetService<ILoggerFactory>()));
25+
options.UsePersistence(sp => new RedisPersistenceProvider(connectionString, prefix, deleteComplete, deleteTerminated, sp.GetService<ILoggerFactory>()));
2526
return options;
2627
}
27-
2828
public static WorkflowOptions UseRedisEventHub(this WorkflowOptions options, string connectionString, string channel)
2929
{
3030
options.UseEventHub(sp => new RedisLifeCycleEventHub(connectionString, channel, sp.GetService<ILoggerFactory>()));

src/providers/WorkflowCore.Providers.Redis/Services/RedisPersistenceProvider.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,19 @@ public class RedisPersistenceProvider : IPersistenceProvider
2727

2828
private readonly JsonSerializerSettings _serializerSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
2929
private readonly bool _removeComplete;
30+
private readonly bool _removeTerminated;
3031

3132
public bool SupportsScheduledCommands => false;
3233

33-
public RedisPersistenceProvider(string connectionString, string prefix, bool removeComplete, ILoggerFactory logFactory)
34+
public RedisPersistenceProvider(string connectionString, string prefix, bool removeComplete, bool removeTerminated, ILoggerFactory logFactory)
3435
{
3536
_connectionString = connectionString;
3637
_prefix = prefix;
3738
_logger = logFactory.CreateLogger(GetType());
3839
_multiplexer = ConnectionMultiplexer.Connect(_connectionString);
3940
_redis = _multiplexer.GetDatabase();
4041
_removeComplete = removeComplete;
42+
_removeTerminated = removeTerminated;
4143
}
4244

4345
public async Task<string> CreateNewWorkflow(WorkflowInstance workflow, CancellationToken _ = default)
@@ -67,7 +69,7 @@ public async Task PersistWorkflow(WorkflowInstance workflow, CancellationToken _
6769
else
6870
{
6971
await _redis.SortedSetRemoveAsync($"{_prefix}.{WORKFLOW_SET}.{RUNNABLE_INDEX}", workflow.Id);
70-
if (_removeComplete && workflow.Status == WorkflowStatus.Complete)
72+
if ((_removeComplete && workflow.Status == WorkflowStatus.Complete) || (_removeTerminated && workflow.Status == WorkflowStatus.Terminated))
7173
await _redis.HashDeleteAsync($"{_prefix}.{WORKFLOW_SET}", workflow.Id);
7274
}
7375
}

0 commit comments

Comments
 (0)