From ee34e09f7f43f8db1bdde9a4482556d8bfd78731 Mon Sep 17 00:00:00 2001 From: Newnius Date: Sat, 11 Jul 2020 00:08:52 +0800 Subject: [PATCH] bugfix, validate submited jobs; avoid divide by zero error when update quota in fair scheduler --- src/main.go | 11 ++++++++++- src/scheduler_fair.go | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main.go b/src/main.go index 7fef262..25be703 100644 --- a/src/main.go +++ b/src/main.go @@ -54,10 +54,19 @@ func serverAPI(w http.ResponseWriter, r *http.Request) { log.Debug("job_submit") msgSubmit := MsgSubmit{Code: 0} err := json.Unmarshal([]byte(string(r.PostFormValue("job"))), &job) - log.Info("Submit job ", job.Name, " at ", time.Now()) + if err != nil { msgSubmit.Code = 1 msgSubmit.Error = err.Error() + } else if len(job.Tasks) == 0 { + msgSubmit.Code = 2 + msgSubmit.Error = "task not found in the job" + } else if InstanceOfGroupManager().get(job.Group) == nil { + msgSubmit.Code = 2 + msgSubmit.Error = "Queue not found" + } else if len(job.Workspace) == 0 { + msgSubmit.Code = 2 + msgSubmit.Error = "Docker image cannot be empty" } else { job.Name = job.Name + "-" job.Name += strconv.FormatInt(time.Now().UnixNano(), 10) diff --git a/src/scheduler_fair.go b/src/scheduler_fair.go index 0726149..7fe7c99 100644 --- a/src/scheduler_fair.go +++ b/src/scheduler_fair.go @@ -558,6 +558,10 @@ func (scheduler *SchedulerFair) UpdateQuota() { } sort.Sort(sort.Reverse(scheduler.queues[queue])) + /* minimum is 1, to avoid divide by zero error following */ + if request.NumberGPU == 0 { + request.NumberGPU = 1 + } if quota, ok := scheduler.queuesQuota[queue]; ok && quota.NumberGPU >= request.NumberGPU*1000 { continue }