@@ -584,6 +584,25 @@ func (e *Engine) handleAllTriggerEvents(ctx context.Context) {
584584
585585// startExecution initiates a new workflow execution, blocking until completed
586586func (e * Engine ) startExecution (ctx context.Context , wrappedTriggerEvent enqueuedTriggerEvent ) {
587+ newExecutionID , err := events .GenerateExecutionIDWithTriggerIndex (e .cfg .WorkflowID , wrappedTriggerEvent .event .Event .ID , wrappedTriggerEvent .triggerIndex )
588+ if err != nil {
589+ e .logger ().Errorw ("Failed to generate execution ID" , "err" , err , "triggerID" , wrappedTriggerEvent .triggerCapID )
590+ return
591+ }
592+ executionTimeProvider := NewDonTimeProvider (e .cfg .DonTimeStore , newExecutionID , e .logger ())
593+
594+ var executionTimestamp int64
595+ if tsErr := e .cfg .LocalLimiters .ExecutionTimestampsEnabled .AllowErr (ctx ); tsErr == nil {
596+ donTime , dtErr := executionTimeProvider .GetDONTime ()
597+ if dtErr != nil {
598+ executionTimestamp = e .cfg .Clock .Now ().UnixMilli ()
599+ e .logger ().Warnw ("Failed to get DON time for execution timestamp, falling back to local time" , "err" , dtErr )
600+ } else {
601+ executionTimestamp = donTime .UnixMilli ()
602+ e .logger ().Debugw ("Execution timestamp assigned" , "executionTimestamp" , executionTimestamp )
603+ }
604+ }
605+
587606 triggerEvent := wrappedTriggerEvent .event .Event
588607 executionID , err := events .GenerateExecutionID (e .cfg .WorkflowID , triggerEvent .ID )
589608 if err != nil {
@@ -718,8 +737,8 @@ func (e *Engine) startExecution(ctx context.Context, wrappedTriggerEvent enqueue
718737 return
719738 }
720739 execHelper := & ExecutionHelper {
721- Engine : e , WorkflowExecutionID : executionID , UserLogChan : userLogChan ,
722- TimeProvider : timeProvider , SecretsFetcher : e .secretsFetcher (executionID ),
740+ Engine : e , WorkflowExecutionID : executionID , ExecutionTimestamp : executionTimestamp ,
741+ UserLogChan : userLogChan , TimeProvider : timeProvider , SecretsFetcher : e .secretsFetcher (executionID ),
723742 }
724743 execHelper .initLimiters (e .cfg .LocalLimiters )
725744 var result * sdkpb.ExecutionResult
0 commit comments