From f7350a8282b29225996e5517d1d3ade8defa68d4 Mon Sep 17 00:00:00 2001 From: cheniujh <41671101+cheniujh@users.noreply.github.com> Date: Wed, 3 Jul 2024 14:20:57 +0800 Subject: [PATCH] remove an unnecessary shared_lock in a hot path(every request will conduct this unnecessary lock) (#2773) Co-authored-by: cheniujh <1271435567@qq.com> --- include/pika_binlog.h | 2 +- src/pika_binlog.cc | 7 +++++++ src/pika_consensus.cc | 4 +--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/pika_binlog.h b/include/pika_binlog.h index 84127fb53..851de8874 100644 --- a/include/pika_binlog.h +++ b/include/pika_binlog.h @@ -52,7 +52,7 @@ class Binlog : public pstd::noncopyable { void Unlock() { mutex_.unlock(); } pstd::Status Put(const std::string& item); - + pstd::Status IsOpened(); pstd::Status GetProducerStatus(uint32_t* filenum, uint64_t* pro_offset, uint32_t* term = nullptr, uint64_t* logic_id = nullptr); /* * Set Producer pro_num and pro_offset with lock diff --git a/src/pika_binlog.cc b/src/pika_binlog.cc index d0a612f24..6f4ed2861 100644 --- a/src/pika_binlog.cc +++ b/src/pika_binlog.cc @@ -145,6 +145,13 @@ void Binlog::InitLogFile() { opened_.store(true); } +Status Binlog::IsOpened() { + if (!opened_.load()) { + return Status::Busy("Binlog is not open yet"); + } + return Status::OK(); +} + Status Binlog::GetProducerStatus(uint32_t* filenum, uint64_t* pro_offset, uint32_t* term, uint64_t* logic_id) { if (!opened_.load()) { return Status::Busy("Binlog is not open yet"); diff --git a/src/pika_consensus.cc b/src/pika_consensus.cc index 0de6e7d07..05cf535b4 100644 --- a/src/pika_consensus.cc +++ b/src/pika_consensus.cc @@ -374,9 +374,7 @@ Status ConsensusCoordinator::InternalAppendBinlog(const std::shared_ptr& cm } return s; } - uint32_t filenum = 0; - uint64_t offset = 0; - return stable_logger_->Logger()->GetProducerStatus(&filenum, &offset); + return stable_logger_->Logger()->IsOpened(); } Status ConsensusCoordinator::AddSlaveNode(const std::string& ip, int port, int session_id) {