diff --git a/pkg/scheduler/scheduler.go b/pkg/scheduler/scheduler.go index 5da8db940c..db273e2fdc 100644 --- a/pkg/scheduler/scheduler.go +++ b/pkg/scheduler/scheduler.go @@ -61,27 +61,10 @@ func NewScheduler( // Run runs the Scheduler func (pc *Scheduler) Run(stopCh <-chan struct{}) { - var err error - // Start cache for policy. go pc.cache.Run(stopCh) pc.cache.WaitForCacheSync(stopCh) - // Load configuration of scheduler - schedConf := defaultSchedulerConf - if len(pc.schedulerConf) != 0 { - if schedConf, err = readSchedulerConf(pc.schedulerConf); err != nil { - glog.Errorf("Failed to read scheduler configuration '%s', using default configuration: %v", - pc.schedulerConf, err) - schedConf = defaultSchedulerConf - } - } - - pc.actions, pc.plugins, err = loadSchedulerConf(schedConf) - if err != nil { - panic(err) - } - go wait.Until(pc.runOnce, pc.schedulePeriod, stopCh) } @@ -91,6 +74,8 @@ func (pc *Scheduler) runOnce() { defer glog.V(4).Infof("End scheduling ...") defer metrics.UpdateE2eDuration(metrics.Duration(scheduleStartTime)) + pc.loadSchedulerConf() + ssn := framework.OpenSession(pc.cache, pc.plugins) defer framework.CloseSession(ssn) @@ -100,3 +85,22 @@ func (pc *Scheduler) runOnce() { metrics.UpdateActionDuration(action.Name(), metrics.Duration(actionStartTime)) } } + +func (pc *Scheduler) loadSchedulerConf() { + var err error + + // Load configuration of scheduler + schedConf := defaultSchedulerConf + if len(pc.schedulerConf) != 0 { + if schedConf, err = readSchedulerConf(pc.schedulerConf); err != nil { + glog.Errorf("Failed to read scheduler configuration '%s', using default configuration: %v", + pc.schedulerConf, err) + schedConf = defaultSchedulerConf + } + } + + pc.actions, pc.plugins, err = loadSchedulerConf(schedConf) + if err != nil { + panic(err) + } +}