@@ -111,8 +111,12 @@ protected override async Task ExecuteWorkItemAsync(TaskOrchestrationWorkItem wor
111111 {
112112 throw new ArgumentException ( $ "Could not find an orchestration instance ID in the work item's runtime state.", nameof ( workItem ) ) ;
113113 }
114-
115- // We loop for as long as the orchestrator does a ContinueAsNew
114+
115+ var activityMessages = new List < TaskMessage > ( ) ;
116+ var timerMessages = new List < TaskMessage > ( ) ;
117+ var orchestratorMessages = new List < TaskMessage > ( ) ;
118+
119+ // We loop for as long as the orchestrator does a ContinueAsNew
116120 while ( true )
117121 {
118122 if ( this . log . IsEnabled ( LogLevel . Debug ) )
@@ -138,9 +142,9 @@ protected override async Task ExecuteWorkItemAsync(TaskOrchestrationWorkItem wor
138142 this . ApplyOrchestratorActions (
139143 result ,
140144 ref workItem . OrchestrationRuntimeState ,
141- out List < TaskMessage > activityMessages ,
142- out List < TaskMessage > orchestratorMessages ,
143- out List < TaskMessage > timerMessages ,
145+ activityMessages ,
146+ orchestratorMessages ,
147+ timerMessages ,
144148 out OrchestrationState ? updatedStatus ,
145149 out bool continueAsNew ) ;
146150 if ( continueAsNew )
@@ -247,9 +251,9 @@ static string GetShortHistoryEventDescription(HistoryEvent e)
247251 void ApplyOrchestratorActions (
248252 OrchestratorExecutionResult result ,
249253 ref OrchestrationRuntimeState runtimeState ,
250- out List < TaskMessage > activityMessages , // CA1859: Use concrete types for better performance
251- out List < TaskMessage > orchestratorMessages , // CA1859: Use concrete types for better performance
252- out List < TaskMessage > timerMessages , // CA1859: Use concrete types for better performance
254+ List < TaskMessage > activityMessages , // CA1859: Use concrete types for better performance
255+ List < TaskMessage > orchestratorMessages , // CA1859: Use concrete types for better performance
256+ List < TaskMessage > timerMessages , // CA1859: Use concrete types for better performance
253257 out OrchestrationState ? updatedStatus ,
254258 out bool continueAsNew )
255259 {
@@ -258,9 +262,6 @@ void ApplyOrchestratorActions(
258262 throw new ArgumentException ( $ "The provided { nameof ( OrchestrationRuntimeState ) } doesn't contain an instance ID!", nameof ( runtimeState ) ) ;
259263 }
260264
261- List < TaskMessage > ? newActivityMessages = null ; // CA1859: Use concrete types for better performance
262- List < TaskMessage > ? newTimerMessages = null ; // CA1859: Use concrete types for better performance
263- List < TaskMessage > ? newOrchestratorMessages = null ; // CA1859: Use concrete types for better performance
264265 FailureDetails ? failureDetails = null ;
265266 continueAsNew = false ;
266267
@@ -288,8 +289,7 @@ void ApplyOrchestratorActions(
288289 scheduledEvent . ParentTraceContext ??= new ( grpcAction . ParentTraceContext . TraceParent , grpcAction . ParentTraceContext . TraceState ) ;
289290 }
290291
291- newActivityMessages ??= new List < TaskMessage > ( ) ;
292- newActivityMessages . Add ( new TaskMessage
292+ activityMessages . Add ( new TaskMessage
293293 {
294294 Event = scheduledEvent ,
295295 OrchestrationInstance = runtimeState . OrchestrationInstance ,
@@ -301,8 +301,7 @@ void ApplyOrchestratorActions(
301301 {
302302 TimerCreatedEvent timerEvent = new ( timerAction . Id , timerAction . FireAt ) ;
303303
304- newTimerMessages ??= new List < TaskMessage > ( ) ;
305- newTimerMessages . Add ( new TaskMessage
304+ timerMessages . Add ( new TaskMessage
306305 {
307306 Event = new TimerFiredEvent ( - 1 , timerAction . FireAt )
308307 {
@@ -346,8 +345,7 @@ void ApplyOrchestratorActions(
346345 Tags = subOrchestrationAction . Tags ,
347346 } ;
348347
349- newOrchestratorMessages ??= new List < TaskMessage > ( ) ;
350- newOrchestratorMessages . Add ( new TaskMessage
348+ orchestratorMessages . Add ( new TaskMessage
351349 {
352350 Event = startedEvent ,
353351 OrchestrationInstance = startedEvent . OrchestrationInstance ,
@@ -367,13 +365,17 @@ void ApplyOrchestratorActions(
367365 Input = sendEventAction . EventData ,
368366 } ;
369367
370- runtimeState . AddEvent ( sendEvent ) ;
368+ runtimeState . AddEvent ( sendEvent ) ;
369+
370+ EventRaisedEvent eventRaisedEvent = new ( - 1 , sendEventAction . EventData )
371+ {
372+ Name = sendEventAction . EventName
373+ } ;
371374
372- newOrchestratorMessages ??= new List < TaskMessage > ( ) ;
373- newOrchestratorMessages . Add ( new TaskMessage
375+ orchestratorMessages . Add ( new TaskMessage
374376 {
375- Event = sendEvent ,
376- OrchestrationInstance = runtimeState . OrchestrationInstance ,
377+ Event = eventRaisedEvent ,
378+ OrchestrationInstance = sendEventAction . Instance ,
377379 } ) ;
378380 }
379381 else if ( action is OrchestrationCompleteOrchestratorAction completeAction )
@@ -408,9 +410,6 @@ void ApplyOrchestratorActions(
408410 }
409411
410412 runtimeState = newRuntimeState ;
411- activityMessages = new List < TaskMessage > ( ) ;
412- orchestratorMessages = new List < TaskMessage > ( ) ;
413- timerMessages = new List < TaskMessage > ( ) ;
414413 continueAsNew = true ;
415414 updatedStatus = null ;
416415 return ;
@@ -457,8 +456,7 @@ void ApplyOrchestratorActions(
457456 completeAction . FailureDetails ) ;
458457 }
459458
460- newOrchestratorMessages ??= new List < TaskMessage > ( ) ;
461- newOrchestratorMessages . Add ( new TaskMessage
459+ orchestratorMessages . Add ( new TaskMessage
462460 {
463461 Event = subOrchestratorCompletedEvent ,
464462 OrchestrationInstance = runtimeState . ParentInstance . OrchestrationInstance ,
@@ -475,10 +473,6 @@ void ApplyOrchestratorActions(
475473
476474 runtimeState . AddEvent ( new OrchestratorCompletedEvent ( - 1 ) ) ;
477475
478- activityMessages = newActivityMessages ?? new List < TaskMessage > ( ) ;
479- timerMessages = newTimerMessages ?? new List < TaskMessage > ( ) ;
480- orchestratorMessages = newOrchestratorMessages ?? new List < TaskMessage > ( ) ;
481-
482476 updatedStatus = new OrchestrationState
483477 {
484478 OrchestrationInstance = runtimeState . OrchestrationInstance ,
0 commit comments