diff --git a/server/http_handler.go b/server/http_handler.go index f4476721a24c6..1853d60f02e28 100644 --- a/server/http_handler.go +++ b/server/http_handler.go @@ -767,14 +767,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 5b29dd91c5b6b..d871c10eed2ef 100644 --- a/sessionctx/binloginfo/binloginfo.go +++ b/sessionctx/binloginfo/binloginfo.go @@ -119,9 +119,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.