diff --git a/src/kvstore/LogEncoder.cpp b/src/kvstore/LogEncoder.cpp index 94b2c098d8f..3ef552baeda 100644 --- a/src/kvstore/LogEncoder.cpp +++ b/src/kvstore/LogEncoder.cpp @@ -176,7 +176,7 @@ std::string encodeHost(LogType type, const HostAddr& host) { return encoded; } -HostAddr decodeHost(LogType type, folly::StringPiece encoded) { +HostAddr decodeHost(LogType type, const folly::StringPiece& encoded) { HostAddr addr; CHECK_EQ(sizeof(int64_t) + 1 + sizeof(HostAddr), encoded.size()); CHECK(encoded[sizeof(int64_t)] == type); diff --git a/src/kvstore/LogEncoder.h b/src/kvstore/LogEncoder.h index 475d0d21315..68e14e4c26a 100644 --- a/src/kvstore/LogEncoder.h +++ b/src/kvstore/LogEncoder.h @@ -42,7 +42,7 @@ std::vector decodeMultiValues(folly::StringPiece encoded); std::string encodeHost(LogType type, const HostAddr& learner); -HostAddr decodeHost(LogType type, folly::StringPiece encoded); +HostAddr decodeHost(LogType type, const folly::StringPiece& encoded); } // namespace kvstore } // namespace nebula diff --git a/src/kvstore/raftex/RaftPart.cpp b/src/kvstore/raftex/RaftPart.cpp index ca42ce4dff5..84ed8f6f532 100644 --- a/src/kvstore/raftex/RaftPart.cpp +++ b/src/kvstore/raftex/RaftPart.cpp @@ -469,7 +469,11 @@ void RaftPart::removePeer(const HostAddr& peer) { if (it == hosts_.end()) { LOG(INFO) << idStr_ << "The peer " << peer << " not exist!"; } else { - CHECK(!(*it)->isLearner()) << idStr_ << "Peer " << peer << " should not be learner!"; + if ((*it)->isLearner()) { + LOG(INFO) << idStr_ << "The peer is learner, remove it directly!"; + hosts_.erase(it); + return; + } hosts_.erase(it); updateQuorum(); LOG(INFO) << idStr_ << "Remove peer " << peer;