Commit 7ba9b8f5 authored by Alex Dadgar's avatar Alex Dadgar
Browse files

Always remove periodic jobs in fsm

parent 9e6457eb
Showing with 15 additions and 20 deletions
+15 -20
......@@ -262,28 +262,20 @@ func (n *nomadFSM) applyDeregisterJob(buf []byte, index uint64) interface{} {
panic(fmt.Errorf("failed to decode request: %v", err))
}
job, err := n.state.JobByID(req.JobID)
if err != nil {
if err := n.state.DeleteJob(index, req.JobID); err != nil {
n.logger.Printf("[ERR] nomad.fsm: DeleteJob failed: %v", err)
return err
}
if err := n.state.DeleteJob(index, req.JobID); err != nil {
n.logger.Printf("[ERR] nomad.fsm: DeleteJob failed: %v", err)
if err := n.periodicDispatcher.Remove(req.JobID); err != nil {
n.logger.Printf("[ERR] nomad.fsm: periodicDispatcher.Remove failed: %v", err)
return err
}
if job.IsPeriodic() {
if err := n.periodicDispatcher.Remove(req.JobID); err != nil {
n.logger.Printf("[ERR] nomad.fsm: periodicDispatcher.Remove failed: %v", err)
return err
}
if err := n.state.DeletePeriodicLaunch(index, req.JobID); err != nil {
n.logger.Printf("[ERR] nomad.fsm: DeletePeriodicLaunch failed: %v", err)
return err
}
}
// We always delete from the periodic launch table because it is possible that
// the job was updated to be non-perioidic, thus checking if it is periodic
// doesn't ensure we clean it up properly.
n.state.DeletePeriodicLaunch(index, req.JobID)
return nil
}
......
......@@ -197,11 +197,14 @@ func (p *PeriodicDispatch) removeLocked(jobID string) error {
return nil
}
if job, tracked := p.tracked[jobID]; tracked {
delete(p.tracked, jobID)
if err := p.heap.Remove(job); err != nil {
return fmt.Errorf("failed to remove tracked job %v: %v", jobID, err)
}
job, tracked := p.tracked[jobID]
if !tracked {
return nil
}
delete(p.tracked, jobID)
if err := p.heap.Remove(job); err != nil {
return fmt.Errorf("failed to remove tracked job %v: %v", jobID, err)
}
// Signal an update.
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment