diff --git a/server/http_handler.go b/server/http_handler.go index 2a2e81bb3089a..17dc97daa5759 100644 --- a/server/http_handler.go +++ b/server/http_handler.go @@ -721,14 +721,22 @@ func (h binlogRecover) ServeHTTP(w http.ResponseWriter, req *http.Request) { case "reset": binloginfo.ResetSkippedCommitterCounter() case "nowait": - binloginfo.DisableSkipBinlogFlag() + err := binloginfo.DisableSkipBinlogFlag() + if err != nil { + writeError(w, err) + return + } case "status": default: sec, err := strconv.ParseInt(req.FormValue(qSeconds), 10, 64) if sec <= 0 || err != nil { sec = 1800 } - binloginfo.DisableSkipBinlogFlag() + err = binloginfo.DisableSkipBinlogFlag() + if err != nil { + writeError(w, err) + return + } timeout := time.Duration(sec) * time.Second err = binloginfo.WaitBinlogRecover(timeout) if err != nil { diff --git a/sessionctx/binloginfo/binloginfo.go b/sessionctx/binloginfo/binloginfo.go index 8f745a1a99570..efcf5c863206d 100644 --- a/sessionctx/binloginfo/binloginfo.go +++ b/sessionctx/binloginfo/binloginfo.go @@ -122,9 +122,15 @@ func EnableSkipBinlogFlag() { } // DisableSkipBinlogFlag disable the skipBinlog flag. -func DisableSkipBinlogFlag() { +func DisableSkipBinlogFlag() error { + if err := statusListener(BinlogStatusOn); err != nil { + logutil.BgLogger().Warn("update binlog status failed", zap.Error(err)) + return errors.Trace(err) + } + atomic.StoreUint32(&skipBinlog, 0) logutil.BgLogger().Warn("[binloginfo] disable the skipBinlog flag") + return nil } // IsBinlogSkipped gets the skipBinlog flag.