From 92032e7a19205a45d49dfa75d0a862afe3f0d466 Mon Sep 17 00:00:00 2001 From: HaHaJeff Date: Sun, 26 Mar 2023 07:41:30 +0000 Subject: [PATCH] fixed replay done always return false after flashback. --- src/logservice/logrpc/ob_log_request_handler.cpp | 4 ++-- src/logservice/replayservice/ob_replay_status.cpp | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/logservice/logrpc/ob_log_request_handler.cpp b/src/logservice/logrpc/ob_log_request_handler.cpp index 67f31ab8b..7660e889d 100644 --- a/src/logservice/logrpc/ob_log_request_handler.cpp +++ b/src/logservice/logrpc/ob_log_request_handler.cpp @@ -356,10 +356,10 @@ int LogRequestHandler::handle_request(const LogFlashbackMsg &re ret = OB_STATE_NOT_MATCH; CLOG_LOG(WARN, "access_mode do not match, can not do flashback", K(ret), K(palf_id), K(self), K(curr_mode_version), K(curr_access_mode), K(req)); - } else if (OB_FAIL(replay_srv->flashback(ls_id))) { - CLOG_LOG(WARN, "replay_service flashback failed", K(ret), K(ls_id)); } else if (OB_FAIL(palf_handle_guard.flashback(req.mode_version_, req.flashback_scn_, FLASHBACK_TIMEOUT_US))) { CLOG_LOG(WARN, "flashback failed", K(ret), K(palf_id), K(req)); + } else if (OB_FAIL(replay_srv->flashback(ls_id))) { + CLOG_LOG(WARN, "replay_service flashback failed", K(ret), K(ls_id)); } else if (OB_FAIL(get_rpc_proxy_(rpc_proxy))) { CLOG_LOG(WARN, "get_rpc_proxy_ failed", K(ret), K(palf_id)); } else if (OB_FAIL(get_self_addr_(self))) { diff --git a/src/logservice/replayservice/ob_replay_status.cpp b/src/logservice/replayservice/ob_replay_status.cpp index 86b76c24a..d4c850589 100644 --- a/src/logservice/replayservice/ob_replay_status.cpp +++ b/src/logservice/replayservice/ob_replay_status.cpp @@ -839,7 +839,7 @@ int ObReplayStatus::flashback() int ret = OB_SUCCESS; WLockGuardWithRetryInterval wguard(rwlock_, WRLOCK_TRY_THRESHOLD, WRLOCK_RETRY_INTERVAL); if (OB_FAIL(flashback_())) { - CLOG_LOG(WARN, "replay status flashback failed", K(ret), KPC(this)); + CLOG_LOG(WARN, "replay status flashback failed", K(ret), KPC(this)); } else { CLOG_LOG(INFO, "replay status flashback success", K(ret), KPC(this)); } @@ -849,14 +849,13 @@ int ObReplayStatus::flashback() int ObReplayStatus::flashback_() { int ret = OB_SUCCESS; - LSN next_to_submit_lsn; - SCN next_to_submit_scn; ObLogReplayTask *cache_task = NULL; - // committed_end_lsn may be smaller than exact value after flashback - if (OB_FAIL(submit_log_task_.get_next_to_submit_log_info(next_to_submit_lsn, next_to_submit_scn))) { - CLOG_LOG(WARN, "get_next_to_submit_log_info failed", K(ret), KPC(this)); - } else if (OB_FAIL(submit_log_task_.set_committed_end_lsn(next_to_submit_lsn))) { - CLOG_LOG(WARN, "set_committed_end_lsn failed", K(ret), KPC(this), K(next_to_submit_lsn)); + // bugfix: + LSN committed_end_lsn; + if (OB_FAIL(palf_handle_.get_end_lsn(committed_end_lsn))) { + CLOG_LOG(WARN, "get_end_lsn failed", K(ret), KPC(this)); + } else if (OB_FAIL(submit_log_task_.set_committed_end_lsn(committed_end_lsn))) { + CLOG_LOG(WARN, "set_committed_end_lsn failed", K(ret), KPC(this), K(committed_end_lsn)); } else { // do nothing }