@@ -483,12 +483,43 @@ func (envs *Manager) TeardownEnvironment(environmentId uid.ID, force bool) error
483483 if env .CurrentState () == "RUNNING" {
484484 endTime , ok := env .workflow .GetUserVars ().Get ("run_end_time_ms" )
485485 if ok && endTime == "" {
486- runEndTime := strconv .FormatInt (time .Now ().UnixMilli (), 10 )
487- env .workflow .SetRuntimeVar ("run_end_time_ms" , runEndTime )
486+ runEndTime := time .Now ()
487+ runEndTimeS := strconv .FormatInt (runEndTime .UnixMilli (), 10 )
488+ env .workflow .SetRuntimeVar ("run_end_time_ms" , runEndTimeS )
489+
490+ the .EventWriterWithTopic (topic .Run ).WriteEventWithTimestamp (& evpb.Ev_RunEvent {
491+ EnvironmentId : environmentId .String (),
492+ RunNumber : env .GetCurrentRunNumber (),
493+ State : env .Sm .Current (),
494+ Error : "" ,
495+ Transition : "TEARDOWN" ,
496+ TransitionStatus : evpb .OpStatus_STARTED ,
497+ Vars : nil ,
498+ }, runEndTime )
488499 } else {
489500 log .WithField ("partition" , environmentId .String ()).
490501 Debug ("O2 End time already set before DESTROY" )
491502 }
503+
504+ endCompletionTime , ok := env .workflow .GetUserVars ().Get ("run_end_completion_time_ms" )
505+ if ok && endCompletionTime == "" {
506+ runEndCompletionTime := time .Now ()
507+ runEndCompletionTimeS := strconv .FormatInt (runEndCompletionTime .UnixMilli (), 10 )
508+ env .workflow .SetRuntimeVar ("run_end_completion_time_ms" , runEndCompletionTimeS )
509+
510+ the .EventWriterWithTopic (topic .Run ).WriteEventWithTimestamp (& evpb.Ev_RunEvent {
511+ EnvironmentId : environmentId .String (),
512+ RunNumber : env .GetCurrentRunNumber (),
513+ State : env .Sm .Current (),
514+ Error : "" ,
515+ Transition : "TEARDOWN" ,
516+ TransitionStatus : evpb .OpStatus_STARTED ,
517+ Vars : nil ,
518+ }, runEndCompletionTime )
519+ } else {
520+ log .WithField ("partition" , environmentId .String ()).
521+ Debug ("O2 End Completion time already set before DESTROY" )
522+ }
492523 }
493524
494525 tasksToRelease := env .Workflow ().GetTasks ()
0 commit comments