diff --git a/src/job_manager.go b/src/job_manager.go index 5238694..5e65d75 100644 --- a/src/job_manager.go +++ b/src/job_manager.go @@ -197,9 +197,11 @@ func (jm *JobManager) checkStatus(status []TaskStatus) { jm.scheduler.UpdateProgress(jm.job, Failed) } - jm.scheduler.ReleaseResource(jm.job, jm.resources[i]) - log.Info("return resource ", jm.resources[i].ClientID) - jm.resources[i].ClientID = "_released_" + if jm.resources[i].ClientID != "_released_" { + jm.scheduler.ReleaseResource(jm.job, jm.resources[i]) + log.Info("return resource ", jm.resources[i].ClientID) + jm.resources[i].ClientID = "_released_" + } for _, t := range jm.resources[i].Status { InstanceOfResourcePool().detach(t.UUID, jm.job) diff --git a/src/scheduler_fair.go b/src/scheduler_fair.go index 942ee75..ce212c4 100644 --- a/src/scheduler_fair.go +++ b/src/scheduler_fair.go @@ -277,6 +277,9 @@ func (scheduler *SchedulerFair) AcquireResource(job Job) []NodeStatus { }(res) } + go func() { + scheduler.UpdateQuota() + }() return res } @@ -296,7 +299,9 @@ func (scheduler *SchedulerFair) ReleaseResource(job Job, agent NodeStatus) { } scheduler.resourceAllocationsMu.Unlock() }(agent) - scheduler.UpdateQuota() + go func() { + scheduler.UpdateQuota() + }() } /* allocate quota to queues */