From f0273a3911f78efba8c12151346e5f9423949abc Mon Sep 17 00:00:00 2001 From: fuifuiyong Date: Wed, 12 Apr 2023 11:23:30 +0800 Subject: [PATCH] Fix exception when Continue-as-New and Termination happens at the same time --- src/DurableTask.Core/TaskOrchestrationDispatcher.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/DurableTask.Core/TaskOrchestrationDispatcher.cs b/src/DurableTask.Core/TaskOrchestrationDispatcher.cs index d7e3dcc98..7f9d5f521 100644 --- a/src/DurableTask.Core/TaskOrchestrationDispatcher.cs +++ b/src/DurableTask.Core/TaskOrchestrationDispatcher.cs @@ -805,7 +805,7 @@ bool ReconcileMessagesWithState(TaskOrchestrationWorkItem workItem) out bool continuedAsNew) { ExecutionCompletedEvent executionCompletedEvent; - continuedAsNew = (completeOrchestratorAction.OrchestrationStatus == OrchestrationStatus.ContinuedAsNew); + continuedAsNew = (completeOrchestratorAction.OrchestrationStatus == OrchestrationStatus.ContinuedAsNew) && (runtimeState.OrchestrationStatus != OrchestrationStatus.Terminated); if (completeOrchestratorAction.OrchestrationStatus == OrchestrationStatus.ContinuedAsNew) { executionCompletedEvent = new ContinueAsNewEvent(completeOrchestratorAction.Id, @@ -819,7 +819,10 @@ bool ReconcileMessagesWithState(TaskOrchestrationWorkItem workItem) completeOrchestratorAction.FailureDetails); } - runtimeState.AddEvent(executionCompletedEvent); + if (runtimeState.OrchestrationStatus != OrchestrationStatus.Terminated) + { + runtimeState.AddEvent(executionCompletedEvent); + } this.logHelper.OrchestrationCompleted(runtimeState, completeOrchestratorAction); TraceHelper.TraceInstance( @@ -1076,4 +1079,4 @@ public void Release() } } } -} \ No newline at end of file +}