Skip to content

Commit

Permalink
api: return error when create grant/evict leader scheduler (#8760) (#…
Browse files Browse the repository at this point in the history
…8769)

ref #8759

Signed-off-by: husharp <[email protected]>
Signed-off-by: okJiang <[email protected]>

Co-authored-by: Hu# <[email protected]>
  • Loading branch information
ti-chi-bot and HuSharp authored Nov 5, 2024
1 parent 933400e commit ba7d856
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 22 deletions.
33 changes: 17 additions & 16 deletions server/api/scheduler.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,10 +210,23 @@ func (h *schedulerHandler) CreateScheduler(w http.ResponseWriter, r *http.Reques
return
}

case schedulers.GrantLeaderName:
h.addEvictOrGrant(w, input, schedulers.GrantLeaderName)
case schedulers.EvictLeaderName:
h.addEvictOrGrant(w, input, schedulers.EvictLeaderName)
case schedulers.GrantLeaderName, schedulers.EvictLeaderName:
storeID, ok := input["store_id"].(float64)
if !ok {
h.r.JSON(w, http.StatusBadRequest, "missing store id")
return
}
exist, err := h.AddEvictOrGrant(storeID, name)
if err != nil {
h.r.JSON(w, http.StatusInternalServerError, err.Error())
return
}
// we should ensure whether it is the first time to create evict-leader-scheduler
// or just update the evict-leader.
if exist {
h.r.JSON(w, http.StatusOK, "The scheduler has been applied to the store.")
return
}
case schedulers.ShuffleLeaderName:
if err := h.AddShuffleLeaderScheduler(); err != nil {
h.r.JSON(w, http.StatusInternalServerError, err.Error())
Expand Down Expand Up @@ -272,18 +285,6 @@ func (h *schedulerHandler) CreateScheduler(w http.ResponseWriter, r *http.Reques
h.r.JSON(w, http.StatusOK, "The scheduler is created.")
}

func (h *schedulerHandler) addEvictOrGrant(w http.ResponseWriter, input map[string]interface{}, name string) {
storeID, ok := input["store_id"].(float64)
if !ok {
h.r.JSON(w, http.StatusBadRequest, "missing store id")
return
}
err := h.AddEvictOrGrant(storeID, name)
if err != nil {
h.r.JSON(w, http.StatusInternalServerError, err.Error())
}
}

// @Tags scheduler
// @Summary Delete a scheduler.
// @Param name path string true "The name of the scheduler."
Expand Down
13 changes: 7 additions & 6 deletions server/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -1119,10 +1119,10 @@ func (h *Handler) redirectSchedulerUpdate(name string, storeID float64) error {
}

// AddEvictOrGrant add evict leader scheduler or grant leader scheduler.
func (h *Handler) AddEvictOrGrant(storeID float64, name string) error {
if exist, err := h.IsSchedulerExisted(name); !exist {
func (h *Handler) AddEvictOrGrant(storeID float64, name string) (exist bool, err error) {
if exist, err = h.IsSchedulerExisted(name); !exist {
if err != nil && !errors.ErrorEqual(err, errs.ErrSchedulerNotFound.FastGenByArgs()) {
return err
return exist, err
}
switch name {
case schedulers.EvictLeaderName:
Expand All @@ -1131,15 +1131,16 @@ func (h *Handler) AddEvictOrGrant(storeID float64, name string) error {
err = h.AddGrantLeaderScheduler(uint64(storeID))
}
if err != nil {
return err
return exist, err
}
} else {
if err := h.redirectSchedulerUpdate(name, storeID); err != nil {
return err
return exist, err
}
log.Info("update scheduler", zap.String("scheduler-name", name), zap.Uint64("store-id", uint64(storeID)))
return exist, nil
}
return nil
return exist, nil
}

// GetPausedSchedulerDelayAt returns paused unix timestamp when a scheduler is paused
Expand Down

0 comments on commit ba7d856

Please sign in to comment.