Skip to content

Commit 2512df4

Browse files
claireguyotteo
authored andcommitted
[OCTRL-690] O2 End time timestamp is only set once per run.
1 parent 833a1c3 commit 2512df4

1 file changed

Lines changed: 24 additions & 6 deletions

File tree

core/environment/environment.go

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -186,11 +186,23 @@ func newEnvironment(userVars map[string]string) (env *Environment, err error) {
186186
}
187187
} else if e.Event == "STOP_ACTIVITY" {
188188
// once we make a smooth transition to "leave_RUNNING" in ControlWorkflows, this could be deleted.
189-
runEndTime := strconv.FormatInt(time.Now().UnixMilli(), 10)
190-
env.workflow.SetRuntimeVar("run_end_time_ms", runEndTime)
189+
endTime, ok := env.workflow.GetUserVars().Get("run_end_time_ms")
190+
if ok && endTime == "" {
191+
runEndTime := strconv.FormatInt(time.Now().UnixMilli(), 10)
192+
env.workflow.SetRuntimeVar("run_end_time_ms", runEndTime)
193+
} else {
194+
log.WithField("partition", envId.String()).
195+
Debug("O2 End time already set before before_STOP_ACTIVITY")
196+
}
191197
} else if e.Event == "GO_ERROR" {
192-
runEndTime := strconv.FormatInt(time.Now().UnixMilli(), 10)
193-
env.workflow.SetRuntimeVar("run_end_time_ms", runEndTime)
198+
endTime, ok := env.workflow.GetUserVars().Get("run_end_time_ms")
199+
if ok && endTime == "" {
200+
runEndTime := strconv.FormatInt(time.Now().UnixMilli(), 10)
201+
env.workflow.SetRuntimeVar("run_end_time_ms", runEndTime)
202+
} else {
203+
log.WithField("partition", envId.String()).
204+
Debug("O2 End time already set before before_GO_ERROR")
205+
}
194206
}
195207
errHooks := env.handleHooks(env.Workflow(), fmt.Sprintf("before_%s", e.Event))
196208
if errHooks != nil {
@@ -200,8 +212,14 @@ func newEnvironment(userVars map[string]string) (env *Environment, err error) {
200212
"leave_state": func(e *fsm.Event) {
201213
// We might leave RUNNING not only through STOP_ACTIVITY. In such cases we also need a run stop time.
202214
if e.Src == "RUNNING" {
203-
runEndTime := strconv.FormatInt(time.Now().UnixMilli(), 10)
204-
env.workflow.SetRuntimeVar("run_end_time_ms", runEndTime)
215+
endTime, ok := env.workflow.GetUserVars().Get("run_end_time_ms")
216+
if ok && endTime == "" {
217+
runEndTime := strconv.FormatInt(time.Now().UnixMilli(), 10)
218+
env.workflow.SetRuntimeVar("run_end_time_ms", runEndTime)
219+
} else {
220+
log.WithField("partition", envId.String()).
221+
Debug("O2 End time already set before leave_RUNNING")
222+
}
205223
}
206224
errHooks := env.handleHooks(env.Workflow(), fmt.Sprintf("leave_%s", e.Src))
207225
if errHooks != nil {

0 commit comments

Comments
 (0)