From bbae488b70b24b94c623fcc75bbe8c0f44b2c00a Mon Sep 17 00:00:00 2001 From: Alex Dadgar Date: Wed, 23 Dec 2015 18:22:16 -0800 Subject: [PATCH] Use desired launch time in periodic launch table --- nomad/fsm.go | 8 +++++++- nomad/leader_test.go | 8 ++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/nomad/fsm.go b/nomad/fsm.go index 54a69584c..1c96cfdab 100644 --- a/nomad/fsm.go +++ b/nomad/fsm.go @@ -244,7 +244,13 @@ func (n *nomadFSM) applyUpsertJob(buf []byte, index uint64) interface{} { } if parent.IsPeriodic() { - launch := &structs.PeriodicLaunch{ID: parentID, Launch: time.Now()} + t, err := n.periodicDispatcher.LaunchTime(req.Job.ID) + if err != nil { + n.logger.Printf("[ERR] nomad.fsm: LaunchTime(%v) failed: %v", req.Job.ID, err) + return err + } + + launch := &structs.PeriodicLaunch{ID: parentID, Launch: t} if err := n.state.UpsertPeriodicLaunch(index, launch); err != nil { n.logger.Printf("[ERR] nomad.fsm: UpsertPeriodicLaunch failed: %v", err) return err diff --git a/nomad/leader_test.go b/nomad/leader_test.go index 6dab28cae..f3029815b 100644 --- a/nomad/leader_test.go +++ b/nomad/leader_test.go @@ -388,13 +388,13 @@ func TestLeader_PeriodicDispatcher_Restore_NoEvals(t *testing.T) { // Flush the periodic dispatcher, ensuring that no evals will be created. s1.periodicDispatcher.SetEnabled(false) - // Sleep till after the job should have been launched. - time.Sleep(3 * time.Second) - // Get the current time to ensure the launch time is after this once we // restore. now := time.Now() + // Sleep till after the job should have been launched. + time.Sleep(3 * time.Second) + // Restore the periodic dispatcher. s1.periodicDispatcher.SetEnabled(true) s1.periodicDispatcher.Start() @@ -412,7 +412,7 @@ func TestLeader_PeriodicDispatcher_Restore_NoEvals(t *testing.T) { } if last.Launch.Before(now) { - t.Fatalf("restorePeriodicDispatcher did not force launch") + t.Fatalf("restorePeriodicDispatcher did not force launch: last %v; want after %v", last.Launch, now) } }