Skip to content

Commit 20a6bc8

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

File tree

4 files changed

+14
-6
lines changed

4 files changed

+14
-6
lines changed

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.26"
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: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,9 +1118,16 @@ 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();
11201120
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_});
1121+
auto peer = 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_};
1124+
auto srv_cfg = raft_server()->get_config()->get_server(nuraft_mesg::to_server_id(peer.id_));
1125+
if (srv_cfg) {
1126+
peer.is_new_joiner = srv_cfg->is_new_joiner();
1127+
} else {
1128+
RD_LOGI("server is not in the config, id={}", peer.id_);
1129+
}
1130+
pi.emplace_back(peer);
11241131
}
11251132
return pi;
11261133
}
@@ -1152,7 +1159,7 @@ std::set< replica_id_t > RaftReplDev::get_active_peers() const {
11521159
uint32_t RaftReplDev::get_blk_size() const { return data_service().get_blk_size(); }
11531160

11541161
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; }
1162+
nuraft::raft_server* RaftReplDev::raft_server() const { return m_repl_svc_ctx->_server; }
11561163

11571164
/////////////////////////////////// Config Serialize/Deserialize Section ////////////////////////////////////
11581165
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)