@@ -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