@@ -574,6 +574,25 @@ func (e *Engine) handleAllTriggerEvents(ctx context.Context) {
574574
575575// startExecution initiates a new workflow execution, blocking until completed
576576func (e * Engine ) startExecution (ctx context.Context , wrappedTriggerEvent enqueuedTriggerEvent ) {
577+ newExecutionID , err := events .GenerateExecutionIDWithTriggerIndex (e .cfg .WorkflowID , wrappedTriggerEvent .event .Event .ID , wrappedTriggerEvent .triggerIndex )
578+ if err != nil {
579+ e .logger ().Errorw ("Failed to generate execution ID" , "err" , err , "triggerID" , wrappedTriggerEvent .triggerCapID )
580+ return
581+ }
582+ executionTimeProvider := NewDonTimeProvider (e .cfg .DonTimeStore , newExecutionID , e .logger ())
583+
584+ var executionTimestamp int64
585+ if tsErr := e .cfg .LocalLimiters .ExecutionTimestampsEnabled .AllowErr (ctx ); tsErr == nil {
586+ donTime , dtErr := executionTimeProvider .GetDONTime ()
587+ if dtErr != nil {
588+ executionTimestamp = e .cfg .Clock .Now ().UnixMilli ()
589+ e .logger ().Warnw ("Failed to get DON time for execution timestamp, falling back to local time" , "err" , dtErr )
590+ } else {
591+ executionTimestamp = donTime .UnixMilli ()
592+ e .logger ().Debugw ("Execution timestamp assigned" , "executionTimestamp" , executionTimestamp )
593+ }
594+ }
595+
577596 triggerEvent := wrappedTriggerEvent .event .Event
578597 executionID , err := events .GenerateExecutionID (e .cfg .WorkflowID , triggerEvent .ID )
579598 if err != nil {
@@ -707,8 +726,8 @@ func (e *Engine) startExecution(ctx context.Context, wrappedTriggerEvent enqueue
707726 return
708727 }
709728 execHelper := & ExecutionHelper {
710- Engine : e , WorkflowExecutionID : executionID , UserLogChan : userLogChan ,
711- TimeProvider : timeProvider , SecretsFetcher : e .secretsFetcher (executionID ),
729+ Engine : e , WorkflowExecutionID : executionID , ExecutionTimestamp : executionTimestamp ,
730+ UserLogChan : userLogChan , TimeProvider : timeProvider , SecretsFetcher : e .secretsFetcher (executionID ),
712731 }
713732 execHelper .initLimiters (e .cfg .LocalLimiters )
714733 var result * sdkpb.ExecutionResult
0 commit comments