Skip to content

Commit a21cae2

Browse files
committed
Expose new joiner in replication status
1 parent 77a8852 commit a21cae2

4 files changed

Lines changed: 11 additions & 6 deletions

File tree

conanfile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
class HomestoreConan(ConanFile):
1111
name = "homestore"
12-
version = "6.6.24"
12+
version = "6.6.25"
1313

1414
homepage = "https://github.com/eBay/Homestore"
1515
description = "HomeStore Storage Engine"

src/include/homestore/replication/repl_decls.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ struct peer_info {
7878
uint64_t replication_idx_;
7979
// The elapsed time since the last successful response from this peer, set to 0 on leader
8080
uint64_t last_succ_resp_us_;
81+
bool is_new_joiner{false};
8182
};
8283

8384
struct replica_member_info {

src/lib/replication/repl_dev/raft_repl_dev.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,10 +1117,14 @@ replica_id_t RaftReplDev::get_leader_id() const {
11171117
std::vector< peer_info > RaftReplDev::get_replication_status() const {
11181118
std::vector< peer_info > pi;
11191119
auto rep_status = m_repl_svc_ctx->get_raft_status();
1120+
auto srv_cfg = raft_server()->get_config()->get_server(raft_server()->get_id());
11201121
for (auto const& pinfo : rep_status) {
1121-
pi.emplace_back(peer_info{.id_ = boost::lexical_cast< replica_id_t >(pinfo.id_),
1122-
.replication_idx_ = pinfo.last_log_idx_,
1123-
.last_succ_resp_us_ = pinfo.last_succ_resp_us_});
1122+
auto peer = peer_info{.id_ = boost::lexical_cast< replica_id_t >(pinfo.id_),
1123+
.replication_idx_ = pinfo.last_log_idx_,
1124+
.last_succ_resp_us_ = pinfo.last_succ_resp_us_};
1125+
if (pinfo.id_ == my_replica_id_str()) { peer.is_new_joiner = srv_cfg->is_new_joiner(); }
1126+
1127+
pi.emplace_back(peer);
11241128
}
11251129
return pi;
11261130
}
@@ -1152,7 +1156,7 @@ std::set< replica_id_t > RaftReplDev::get_active_peers() const {
11521156
uint32_t RaftReplDev::get_blk_size() const { return data_service().get_blk_size(); }
11531157

11541158
nuraft_mesg::repl_service_ctx* RaftReplDev::group_msg_service() { return m_repl_svc_ctx.get(); }
1155-
nuraft::raft_server* RaftReplDev::raft_server() { return m_repl_svc_ctx->_server; }
1159+
nuraft::raft_server* RaftReplDev::raft_server() const { return m_repl_svc_ctx->_server; }
11561160

11571161
/////////////////////////////////// Config Serialize/Deserialize Section ////////////////////////////////////
11581162
static nlohmann::json serialize_server_config(std::list< nuraft::ptr< nuraft::srv_config > > const& server_list) {

src/lib/replication/repl_dev/raft_repl_dev.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ class RaftReplDev : public ReplDev,
243243
//////////////// Accessor/shortcut methods ///////////////////////
244244
nuraft_mesg::repl_service_ctx *group_msg_service();
245245

246-
nuraft::raft_server* raft_server();
246+
nuraft::raft_server* raft_server() const;
247247
RaftReplDevMetrics& metrics() { return m_metrics; }
248248

249249
//////////////// Methods needed for other Raft classes to access /////////////////

0 commit comments

Comments
 (0)