diff --git a/src/raft/raft_server.cpp b/src/raft/raft_server.cpp index 02bc70143..cdb7c667f 100644 --- a/src/raft/raft_server.cpp +++ b/src/raft/raft_server.cpp @@ -205,7 +205,10 @@ void RaftServer::Start() { } } - AppendLogEntries(req.leader_commit, req.prev_log_index + 1, req.entries); + // No need to call this function for a heartbeat + if (!req.entries.empty()) { + AppendLogEntries(req.leader_commit, req.prev_log_index + 1, req.entries); + } // [Raft paper 5.3] // "Once a follower learns that a log entry is committed, it applies @@ -1284,6 +1287,7 @@ void RaftServer::AppendLogEntries(uint64_t leader_commit_index, log_[log_size_] = new_entries[i]; disk_storage_.Put(LogEntryKey(log_size_), SerializeLogEntry(new_entries[i])); + last_entry_term_ = new_entries[i].term; SetLogSize(log_size_ + 1); } } @@ -1292,8 +1296,6 @@ void RaftServer::AppendLogEntries(uint64_t leader_commit_index, if (leader_commit_index > commit_index_) { commit_index_ = std::min(leader_commit_index, log_size_ - 1); } - - last_entry_term_ = GetLogEntry(log_size_ - 1).term; } std::string RaftServer::LogEntryKey(uint64_t index) {