Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
Signed-off-by: husharp <jinhao.hu@pingcap.com>
  • Loading branch information
HuSharp committed Sep 21, 2023
1 parent 0888ef6 commit 143025b
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 4 deletions.
16 changes: 14 additions & 2 deletions pkg/schedule/coordinator.go
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,7 @@ func (c *Coordinator) InitSchedulers(needRun bool) {
log.Info("skip create scheduler with independent configuration", zap.String("scheduler-name", name), zap.String("scheduler-type", cfg.Type), zap.Strings("scheduler-args", cfg.Args))
continue
}
s, err := schedulers.CreateScheduler(cfg.Type, c.opController, c.cluster.GetStorage(), schedulers.ConfigJSONDecoder([]byte(data)), c.schedulers.RemoveScheduler)
s, err := schedulers.CreateSchedulerWithoutSave(cfg.Type, c.opController, c.cluster.GetStorage(), schedulers.ConfigJSONDecoder([]byte(data)), c.schedulers.RemoveScheduler)
if err != nil {
log.Error("can not create scheduler with independent configuration", zap.String("scheduler-name", name), zap.Strings("scheduler-args", cfg.Args), errs.ZapError(err))
continue
Expand All @@ -465,6 +465,12 @@ func (c *Coordinator) InitSchedulers(needRun bool) {
} else if err = c.schedulers.AddSchedulerHandler(s); err != nil {
log.Error("can not add scheduler handler with independent configuration", zap.String("scheduler-name", s.GetName()), zap.Strings("scheduler-args", cfg.Args), errs.ZapError(err))
}

if err == nil {
if err = schedulers.SaveSchedulerConfig(c.cluster.GetStorage(), s); err != nil {
log.Error("can not save scheduler config", zap.String("scheduler-name", s.GetName()), zap.Strings("scheduler-args", cfg.Args), errs.ZapError(err))
}
}
}

// The old way to create the scheduler.
Expand All @@ -477,7 +483,7 @@ func (c *Coordinator) InitSchedulers(needRun bool) {
continue
}

s, err := schedulers.CreateScheduler(schedulerCfg.Type, c.opController, c.cluster.GetStorage(), schedulers.ConfigSliceDecoder(schedulerCfg.Type, schedulerCfg.Args), c.schedulers.RemoveScheduler)
s, err := schedulers.CreateSchedulerWithoutSave(schedulerCfg.Type, c.opController, c.cluster.GetStorage(), schedulers.ConfigSliceDecoder(schedulerCfg.Type, schedulerCfg.Args), c.schedulers.RemoveScheduler)
if err != nil {
log.Error("can not create scheduler", zap.String("scheduler-type", schedulerCfg.Type), zap.Strings("scheduler-args", schedulerCfg.Args), errs.ZapError(err))
continue
Expand All @@ -495,6 +501,12 @@ func (c *Coordinator) InitSchedulers(needRun bool) {
} else if err = c.schedulers.AddSchedulerHandler(s, schedulerCfg.Args...); err != nil && !errors.ErrorEqual(err, errs.ErrSchedulerExisted.FastGenByArgs()) {
log.Error("can not add scheduler handler", zap.String("scheduler-name", s.GetName()), zap.Strings("scheduler-args", schedulerCfg.Args), errs.ZapError(err))
}

if err == nil {
if err = schedulers.SaveSchedulerConfig(c.cluster.GetStorage(), s); err != nil {
log.Error("can not save scheduler config", zap.String("scheduler-name", s.GetName()), zap.Strings("scheduler-args", schedulerCfg.Args), errs.ZapError(err))
}
}
}

// Removes the invalid scheduler config and persist.
Expand Down
2 changes: 1 addition & 1 deletion pkg/schedule/schedulers/evict_leader.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ func newEvictLeaderScheduler(opController *operator.Controller, conf *evictLeade
}
}

// EvictStores returns the IDs of the evict-stores.
// EvictStoreIDs returns the IDs of the evict-stores.
func (s *evictLeaderScheduler) EvictStoreIDs() []uint64 {
return s.conf.getStores()
}
Expand Down
20 changes: 19 additions & 1 deletion pkg/schedule/schedulers/scheduler.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func RegisterSliceDecoderBuilder(typ string, builder ConfigSliceDecoderBuilder)
config.RegisterScheduler(typ)
}

// CreateScheduler creates a scheduler with registered creator func.
// CreateScheduler creates a scheduler with registered creator func abd
func CreateScheduler(typ string, oc *operator.Controller, storage endpoint.ConfigStorage, dec ConfigDecoder, removeSchedulerCb ...func(string) error) (Scheduler, error) {
fn, ok := schedulerMap[typ]
if !ok {
Expand All @@ -136,6 +136,24 @@ func CreateScheduler(typ string, oc *operator.Controller, storage endpoint.Confi
return s, err
}

// CreateSchedulerWithoutSave creates a scheduler with registered creator func.
func CreateSchedulerWithoutSave(typ string, oc *operator.Controller, storage endpoint.ConfigStorage, dec ConfigDecoder, removeSchedulerCb ...func(string) error) (Scheduler, error) {
fn, ok := schedulerMap[typ]
if !ok {
return nil, errs.ErrSchedulerCreateFuncNotRegistered.FastGenByArgs(typ)
}

return fn(oc, storage, dec, removeSchedulerCb...)
}

func SaveSchedulerConfig(storage endpoint.ConfigStorage, s Scheduler) error {
data, err := s.EncodeConfig()
if err != nil {
return err
}
return storage.SaveSchedulerConfig(s.GetName(), data)
}

// FindSchedulerTypeByName finds the type of the specified name.
func FindSchedulerTypeByName(name string) string {
var typ string
Expand Down

0 comments on commit 143025b

Please sign in to comment.