From 9823987faca1cbca903f698c00b1619d1f5918e1 Mon Sep 17 00:00:00 2001 From: Chris Gillum Date: Mon, 23 Feb 2026 17:15:57 -0800 Subject: [PATCH] Remove dead continuedAsNew code after do-while loop The do-while loop in OnProcessWorkItemAsync exits only when continuedAsNew is false. This means all references to continuedAsNew and continuedAsNewMessage after the loop are dead code: - The ternary checks 'continuedAsNew ? null : messagesToSend' always evaluate to messagesToSend (same for timerMessages). - continuedAsNewMessage is always null (only set when continuedAsNew is true, which causes the loop to continue). - 'continuedAsNew' in the return statement is always false. This change: - Narrows the scope of continuedAsNew to just around the do-while loop - Moves continuedAsNewMessage declaration inside the loop body - Simplifies the CompleteTaskOrchestrationWorkItemAsync call arguments - Removes continuedAsNew from the return expression --- src/DurableTask.Core/TaskOrchestrationDispatcher.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/DurableTask.Core/TaskOrchestrationDispatcher.cs b/src/DurableTask.Core/TaskOrchestrationDispatcher.cs index dc97e324e..c85536793 100644 --- a/src/DurableTask.Core/TaskOrchestrationDispatcher.cs +++ b/src/DurableTask.Core/TaskOrchestrationDispatcher.cs @@ -318,7 +318,6 @@ protected async Task OnProcessWorkItemAsync(TaskOrchestrationWorkItem work var timerMessages = new List(); var orchestratorMessages = new List(); var isCompleted = false; - var continuedAsNew = false; var isInterrupted = false; var isRewinding = false; @@ -326,7 +325,6 @@ protected async Task OnProcessWorkItemAsync(TaskOrchestrationWorkItem work CorrelationTraceClient.Propagate(() => CorrelationTraceContext.Current = workItem.TraceContext); ExecutionStartedEvent? continueAsNewExecutionStarted = null; - TaskMessage? continuedAsNewMessage = null; IList? carryOverEvents = null; string? carryOverStatus = null; @@ -389,10 +387,11 @@ protected async Task OnProcessWorkItemAsync(TaskOrchestrationWorkItem work } else { + bool continuedAsNew; do { continuedAsNew = false; - continuedAsNewMessage = null; + TaskMessage? continuedAsNewMessage = null; IReadOnlyList decisions = new List(); bool versioningFailed = false; @@ -707,10 +706,10 @@ protected async Task OnProcessWorkItemAsync(TaskOrchestrationWorkItem work await this.orchestrationService.CompleteTaskOrchestrationWorkItemAsync( workItem, runtimeState, - continuedAsNew ? null : messagesToSend, + messagesToSend, orchestratorMessages, - continuedAsNew ? null : timerMessages, - continuedAsNewMessage, + timerMessages, + continuedAsNewMessage: null, instanceState); if (workItem.RestoreOriginalRuntimeStateDuringCompletion) @@ -718,7 +717,7 @@ await this.orchestrationService.CompleteTaskOrchestrationWorkItemAsync( workItem.OrchestrationRuntimeState = runtimeState; } - return isCompleted || continuedAsNew || isInterrupted || isRewinding; + return isCompleted || isInterrupted || isRewinding; } static OrchestrationExecutionContext GetOrchestrationExecutionContext(OrchestrationRuntimeState runtimeState)