1
0
mirror of synced 2024-11-24 19:53:10 +01:00

Merge tag '2.0.2' into develop

2.0.2
This commit is contained in:
Hans Mulder 2020-01-20 13:07:21 +01:00
commit 01b3aebfb8
2 changed files with 9 additions and 2 deletions

View File

@ -36,9 +36,14 @@ namespace Tapeti.Flow.Default
await FlowStateLock.DeleteFlowState(); await FlowStateLock.DeleteFlowState();
} }
public bool IsStoredOrDeleted()
{
return storeCalled || deleteCalled;
}
public void EnsureStoreOrDeleteIsCalled() 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); throw new InvalidProgramException("Neither Store nor Delete are called for the state of the current flow. FlowID = " + FlowStateLock?.FlowID);
} }

View File

@ -57,7 +57,9 @@ namespace Tapeti.Flow.Default
if (flowContext?.FlowStateLock != null) 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(); await flowContext.FlowStateLock.DeleteFlowState();
flowContext.FlowStateLock.Dispose(); flowContext.FlowStateLock.Dispose();