Fixed: delete flowstate when Exception occurs
This commit is contained in:
parent
ae2acc6614
commit
041cd1eea1
@ -36,9 +36,14 @@ namespace Tapeti.Flow.Default
|
||||
await FlowStateLock.DeleteFlowState();
|
||||
}
|
||||
|
||||
public bool IsStoredOrDeleted()
|
||||
{
|
||||
return storeCalled || deleteCalled;
|
||||
}
|
||||
|
||||
public void EnsureStoreOrDeleteIsCalled()
|
||||
{
|
||||
if (!storeCalled && !deleteCalled)
|
||||
if (!IsStoredOrDeleted())
|
||||
throw new InvalidProgramException("Neither Store nor Delete are called for the state of the current flow. FlowID = " + FlowStateLock?.FlowID);
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,9 @@ namespace Tapeti.Flow.Default
|
||||
|
||||
if (flowContext?.FlowStateLock != null)
|
||||
{
|
||||
if (consumeResult == ConsumeResult.Error)
|
||||
if (!flowContext.IsStoredOrDeleted())
|
||||
// The exception strategy can set the consume result to Success. Instead, check if the yield point
|
||||
// was handled. The flow provider ensures we only end up here in case of an exception.
|
||||
await flowContext.FlowStateLock.DeleteFlowState();
|
||||
|
||||
flowContext.FlowStateLock.Dispose();
|
||||
|
Loading…
Reference in New Issue
Block a user