Skip to content

File tree

2 files changed

+24
-22
lines changed

2 files changed

+24
-22
lines changed
 

‎server/api/scheduler.go

+17-16
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,23 @@ func (h *schedulerHandler) CreateScheduler(w http.ResponseWriter, r *http.Reques
195195
return
196196
}
197197

198-
case schedulers.GrantLeaderName:
199-
h.addEvictOrGrant(w, input, schedulers.GrantLeaderName)
200-
case schedulers.EvictLeaderName:
201-
h.addEvictOrGrant(w, input, schedulers.EvictLeaderName)
198+
case schedulers.GrantLeaderName, schedulers.EvictLeaderName:
199+
storeID, ok := input["store_id"].(float64)
200+
if !ok {
201+
h.r.JSON(w, http.StatusBadRequest, "missing store id")
202+
return
203+
}
204+
exist, err := h.AddEvictOrGrant(storeID, name)
205+
if err != nil {
206+
h.r.JSON(w, http.StatusInternalServerError, err.Error())
207+
return
208+
}
209+
// we should ensure whether it is the first time to create evict-leader-scheduler
210+
// or just update the evict-leader.
211+
if exist {
212+
h.r.JSON(w, http.StatusOK, "The scheduler has been applied to the store.")
213+
return
214+
}
202215
case schedulers.ShuffleLeaderName:
203216
if err := h.AddShuffleLeaderScheduler(); err != nil {
204217
h.r.JSON(w, http.StatusInternalServerError, err.Error())
@@ -257,18 +270,6 @@ func (h *schedulerHandler) CreateScheduler(w http.ResponseWriter, r *http.Reques
257270
h.r.JSON(w, http.StatusOK, "The scheduler is created.")
258271
}
259272

260-
func (h *schedulerHandler) addEvictOrGrant(w http.ResponseWriter, input map[string]interface{}, name string) {
261-
storeID, ok := input["store_id"].(float64)
262-
if !ok {
263-
h.r.JSON(w, http.StatusBadRequest, "missing store id")
264-
return
265-
}
266-
err := h.AddEvictOrGrant(storeID, name)
267-
if err != nil {
268-
h.r.JSON(w, http.StatusInternalServerError, err.Error())
269-
}
270-
}
271-
272273
// @Tags scheduler
273274
// @Summary Delete a scheduler.
274275
// @Param name path string true "The name of the scheduler."

‎server/handler.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -1106,10 +1106,10 @@ func (h *Handler) redirectSchedulerUpdate(name string, storeID float64) error {
11061106
}
11071107

11081108
// AddEvictOrGrant add evict leader scheduler or grant leader scheduler.
1109-
func (h *Handler) AddEvictOrGrant(storeID float64, name string) error {
1110-
if exist, err := h.IsSchedulerExisted(name); !exist {
1109+
func (h *Handler) AddEvictOrGrant(storeID float64, name string) (exist bool, err error) {
1110+
if exist, err = h.IsSchedulerExisted(name); !exist {
11111111
if err != nil && !errors.ErrorEqual(err, errs.ErrSchedulerNotFound.FastGenByArgs()) {
1112-
return err
1112+
return exist, err
11131113
}
11141114
switch name {
11151115
case schedulers.EvictLeaderName:
@@ -1118,15 +1118,16 @@ func (h *Handler) AddEvictOrGrant(storeID float64, name string) error {
11181118
err = h.AddGrantLeaderScheduler(uint64(storeID))
11191119
}
11201120
if err != nil {
1121-
return err
1121+
return exist, err
11221122
}
11231123
} else {
11241124
if err := h.redirectSchedulerUpdate(name, storeID); err != nil {
1125-
return err
1125+
return exist, err
11261126
}
11271127
log.Info("update scheduler", zap.String("scheduler-name", name), zap.Uint64("store-id", uint64(storeID)))
1128+
return exist, nil
11281129
}
1129-
return nil
1130+
return exist, nil
11301131
}
11311132

11321133
// GetPausedSchedulerDelayAt returns paused unix timestamp when a scheduler is paused

0 commit comments

Comments
 (0)
Please sign in to comment.