diff --git a/nomad/fsm.go b/nomad/fsm.go index 45215273c..50e97d0c2 100644 --- a/nomad/fsm.go +++ b/nomad/fsm.go @@ -200,6 +200,13 @@ func (n *nomadFSM) applyUpdateEval(buf []byte, index uint64) interface{} { n.logger.Printf("[ERR] nomad.fsm: UpsertEval failed: %v", err) return err } + + if req.Eval.ShouldEnqueue() { + if err := n.evalBroker.Enqueue(req.Eval); err != nil { + n.logger.Printf("[ERR] nomad.fsm: failed to enqueue evaluation %s: %v", req.Eval.ID, err) + return err + } + } return nil } diff --git a/nomad/fsm_test.go b/nomad/fsm_test.go index f803b5285..5e9c6cfb7 100644 --- a/nomad/fsm_test.go +++ b/nomad/fsm_test.go @@ -229,6 +229,7 @@ func TestFSM_DeregisterJob(t *testing.T) { func TestFSM_UpdateEval(t *testing.T) { fsm := testFSM(t) + fsm.evalBroker.SetEnabled(true) req := structs.EvalUpdateRequest{ Eval: mockEval(), @@ -254,6 +255,12 @@ func TestFSM_UpdateEval(t *testing.T) { if eval.CreateIndex != 1 { t.Fatalf("bad index: %d", eval.CreateIndex) } + + // Verify enqueued + stats := fsm.evalBroker.Stats() + if stats.TotalReady != 1 { + t.Fatalf("bad: %#v %#v", stats, eval) + } } func TestFSM_DeleteEval(t *testing.T) {