From 999bdc8a8e1775caacaf0a813d1c930ff06f5803 Mon Sep 17 00:00:00 2001 From: Alex Dadgar Date: Wed, 23 Dec 2015 19:02:31 -0800 Subject: [PATCH] Only add periodic job insertion time once --- nomad/fsm.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/nomad/fsm.go b/nomad/fsm.go index 1c96cfdab..5fe4009a2 100644 --- a/nomad/fsm.go +++ b/nomad/fsm.go @@ -222,12 +222,20 @@ func (n *nomadFSM) applyUpsertJob(buf []byte, index uint64) interface{} { // job was not launched. In this case, we use the insertion time to // determine if a launch was missed. if req.Job.IsPeriodic() { + prevLaunch, err := n.state.PeriodicLaunchByID(req.Job.ID) + if err != nil { + n.logger.Printf("[ERR] nomad.fsm: PeriodicLaunchByID failed: %v", err) + return err + } + // Record the insertion time as a launch. We overload the launch table // such that the first entry is the insertion time. - launch := &structs.PeriodicLaunch{ID: req.Job.ID, Launch: time.Now()} - if err := n.state.UpsertPeriodicLaunch(index, launch); err != nil { - n.logger.Printf("[ERR] nomad.fsm: UpsertPeriodicLaunch failed: %v", err) - return err + if prevLaunch == nil { + launch := &structs.PeriodicLaunch{ID: req.Job.ID, Launch: time.Now()} + if err := n.state.UpsertPeriodicLaunch(index, launch); err != nil { + n.logger.Printf("[ERR] nomad.fsm: UpsertPeriodicLaunch failed: %v", err) + return err + } } }