From 5bb002d1f8c4c7196b0bed5922e77c6916287d6d Mon Sep 17 00:00:00 2001 From: yy0 Date: Mon, 26 Jul 2021 16:57:15 +0800 Subject: [PATCH] [replay] fix rollback of weak read ts because of nop_or_truncate_log --- src/clog/ob_log_sliding_window.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/clog/ob_log_sliding_window.cpp b/src/clog/ob_log_sliding_window.cpp index b5366495ab..73b200581b 100644 --- a/src/clog/ob_log_sliding_window.cpp +++ b/src/clog/ob_log_sliding_window.cpp @@ -2217,6 +2217,10 @@ void ObLogSlidingWindow::try_update_next_replay_log_info( LOAD128(last, &next_replay_log_id_info_); if (next.hi <= last.hi && next.lo <= last.lo) { break; + } else if (is_nop_or_truncate_log && next.hi > last.hi && next.lo < last.lo) { + // last.lo has been pulled up with keepalive message; need to update log_id + next.hi = log_id; + next.lo = last.lo; } else if (next.hi < last.hi || next.lo < last.lo) { if (!is_nop_or_truncate_log) { CLOG_LOG(ERROR, @@ -2228,7 +2232,12 @@ void ObLogSlidingWindow::try_update_next_replay_log_info( K(next.lo)); } break; - } else if (CAS128(&next_replay_log_id_info_, last, next)) { + } else { + //(next.hi >= last.hi && next.lo > last.lo) || (next.hi > last.hi && next.lo >= last.lo) + // need update + } + // need update + if (CAS128(&next_replay_log_id_info_, last, next)) { break; } else { PAUSE(); -- GitLab