From 2df09cc36d49ac3e4cf4c6f2b071a43834ebf52a Mon Sep 17 00:00:00 2001 From: alesapin Date: Thu, 25 Mar 2021 22:43:21 +0300 Subject: [PATCH] Fix rare race condition on commit cv (#187) --- src/handle_commit.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/handle_commit.cxx b/src/handle_commit.cxx index e8e0292c..b8467e24 100644 --- a/src/handle_commit.cxx +++ b/src/handle_commit.cxx @@ -106,8 +106,12 @@ void raft_server::commit_in_bg() { sm_commit_index_ >= log_store_->next_slot() - 1 ) { std::unique_lock lock(commit_cv_lock_); + auto wait_check = [this] () { + return (log_store_->next_slot() - 1 > sm_commit_index_ && + quick_commit_index_ > sm_commit_index_) || stopping_; + }; p_tr("commit_cv_ sleep\n"); - commit_cv_.wait(lock); + commit_cv_.wait(lock, wait_check); p_tr("commit_cv_ wake up\n"); if (stopping_) {