From 5c3d3592c8bd004ac03b372e29945917467f1b60 Mon Sep 17 00:00:00 2001 From: Newnius Date: Fri, 14 Aug 2020 16:13:36 +0800 Subject: [PATCH] [bugfix] FCFS dead lock --- src/scheduler_FCFS.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/scheduler_FCFS.go b/src/scheduler_FCFS.go index 2fe6db0..db015b3 100644 --- a/src/scheduler_FCFS.go +++ b/src/scheduler_FCFS.go @@ -24,12 +24,21 @@ func (scheduler *SchedulerFCFS) Start() { scheduler.jobMasters = map[string]*JobManager{} scheduler.history = []*Job{} scheduler.enabled = true + scheduler.parallelism = 1 go func() { for { log.Debug("Scheduling") time.Sleep(time.Second * 5) + scheduler.schedulingMu.Lock() + if len(scheduler.schedulingJobs) >= scheduler.parallelism { + scheduler.schedulingMu.Unlock() + time.Sleep(time.Millisecond * 100) + continue + } + scheduler.schedulingMu.Unlock() + scheduler.queueMu.Lock() if len(scheduler.queue) > 0 { @@ -47,8 +56,6 @@ func (scheduler *SchedulerFCFS) Start() { go func() { jm.start() }() - } else { - scheduler.schedulingMu.Unlock() } scheduler.queueMu.Unlock() }