From d4ce05605786775598cf755d9d92dc2f24bfaaa4 Mon Sep 17 00:00:00 2001 From: lhsoft Date: Tue, 2 Apr 2024 17:38:58 +0800 Subject: [PATCH 1/8] add on_install_snapshot callback for statemachine --- src/braft/fsm_caller.cpp | 4 ++++ src/braft/fsm_caller.h | 1 + src/braft/node.cpp | 5 +++++ src/braft/node.h | 3 +++ src/braft/raft.cpp | 1 + src/braft/raft.h | 5 +++++ src/braft/replicator.cpp | 2 ++ 7 files changed, 21 insertions(+) diff --git a/src/braft/fsm_caller.cpp b/src/braft/fsm_caller.cpp index 98913eea..50b9f753 100644 --- a/src/braft/fsm_caller.cpp +++ b/src/braft/fsm_caller.cpp @@ -496,6 +496,10 @@ void FSMCaller::do_stop_following(const LeaderChangeContext& stop_following_cont _fsm->on_stop_following(stop_following_context); } +void FSMCaller::on_install_snapshot_start(const PeerId& peer_id) { + _fsm->on_install_snapshot_start(peer_id); +} + void FSMCaller::describe(std::ostream &os, bool use_html) { const char* newline = (use_html) ? "
" : "\n"; TaskType cur_task = _cur_task; diff --git a/src/braft/fsm_caller.h b/src/braft/fsm_caller.h index 897a50f9..11dfe5f3 100644 --- a/src/braft/fsm_caller.h +++ b/src/braft/fsm_caller.h @@ -116,6 +116,7 @@ class BAIDU_CACHELINE_ALIGNMENT FSMCaller { int on_leader_start(int64_t term, int64_t lease_epoch); int on_start_following(const LeaderChangeContext& start_following_context); int on_stop_following(const LeaderChangeContext& stop_following_context); + void on_install_snapshot_start(const PeerId& peer_id); BRAFT_MOCK int on_error(const Error& e); int64_t last_applied_index() const { return _last_applied_index.load(butil::memory_order_relaxed); diff --git a/src/braft/node.cpp b/src/braft/node.cpp index b5ba39eb..50073be1 100644 --- a/src/braft/node.cpp +++ b/src/braft/node.cpp @@ -1365,6 +1365,11 @@ void NodeImpl::on_error(const Error& e) { lck.unlock(); } +void NodeImpl::install_snapshot_start(const PeerId& peer_id) { + _fsm_caller->on_install_snapshot_start(peer_id); +} + + void NodeImpl::handle_vote_timeout() { std::unique_lock lck(_mutex); diff --git a/src/braft/node.h b/src/braft/node.h index b9dd3e82..0d239d07 100644 --- a/src/braft/node.h +++ b/src/braft/node.h @@ -241,6 +241,9 @@ friend class VoteBallotCtx; bool disable_cli() const { return _options.disable_cli; } bool is_witness() const { return _options.witness; } + + // Called when leader start to install snapshot to remote peer + void install_snapshot_start(const PeerId& peer_id); private: friend class butil::RefCountedThreadSafe; diff --git a/src/braft/raft.cpp b/src/braft/raft.cpp index 6069f706..9906dd90 100644 --- a/src/braft/raft.cpp +++ b/src/braft/raft.cpp @@ -313,6 +313,7 @@ void StateMachine::on_configuration_committed(const Configuration& conf, int64_t void StateMachine::on_stop_following(const LeaderChangeContext&) {} void StateMachine::on_start_following(const LeaderChangeContext&) {} +void StateMachine::on_install_snapshot_start(const PeerId& peer_id) {} BootstrapOptions::BootstrapOptions() : last_log_index(0) diff --git a/src/braft/raft.h b/src/braft/raft.h index cb80163a..a56b8d83 100644 --- a/src/braft/raft.h +++ b/src/braft/raft.h @@ -265,6 +265,11 @@ class StateMachine { // the very leader whom the follower starts to follow. // User can reset the node's information as it starts to follow some leader. virtual void on_start_following(const ::braft::LeaderChangeContext& ctx); + + // Invoked when the leader start to send snapshot to |peer_id| + // Default: Do nothing + virtual void on_install_snapshot_start(const PeerId& peer_id); + }; enum State { diff --git a/src/braft/replicator.cpp b/src/braft/replicator.cpp index f2e2bb5c..7c14cbd2 100644 --- a/src/braft/replicator.cpp +++ b/src/braft/replicator.cpp @@ -789,6 +789,8 @@ void Replicator::_install_snapshot() { add_one_more_task(true)) { return _block(butil::gettimeofday_us(), EBUSY); } + + node_impl->install_snapshot_start(_options.peer_id); // pre-set replicator state to INSTALLING_SNAPSHOT, so replicator could be // blocked if something is wrong, such as throttled for a period of time From 242fee991b0b49a7a210cc85aaad3180a1d55679 Mon Sep 17 00:00:00 2001 From: lhsoft Date: Thu, 16 May 2024 10:59:25 +0800 Subject: [PATCH 2/8] fix comments --- src/braft/fsm_caller.cpp | 4 ++-- src/braft/fsm_caller.h | 2 +- src/braft/node.cpp | 4 ++-- src/braft/node.h | 4 ++-- src/braft/raft.cpp | 2 +- src/braft/raft.h | 2 +- src/braft/replicator.cpp | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/braft/fsm_caller.cpp b/src/braft/fsm_caller.cpp index 50b9f753..8be576b6 100644 --- a/src/braft/fsm_caller.cpp +++ b/src/braft/fsm_caller.cpp @@ -496,8 +496,8 @@ void FSMCaller::do_stop_following(const LeaderChangeContext& stop_following_cont _fsm->on_stop_following(stop_following_context); } -void FSMCaller::on_install_snapshot_start(const PeerId& peer_id) { - _fsm->on_install_snapshot_start(peer_id); +void FSMCaller::on_pre_send_snapshot(const PeerId& peer_id) { + _fsm->on_pre_send_snapshot(peer_id); } void FSMCaller::describe(std::ostream &os, bool use_html) { diff --git a/src/braft/fsm_caller.h b/src/braft/fsm_caller.h index 11dfe5f3..6ad1c84e 100644 --- a/src/braft/fsm_caller.h +++ b/src/braft/fsm_caller.h @@ -116,7 +116,7 @@ class BAIDU_CACHELINE_ALIGNMENT FSMCaller { int on_leader_start(int64_t term, int64_t lease_epoch); int on_start_following(const LeaderChangeContext& start_following_context); int on_stop_following(const LeaderChangeContext& stop_following_context); - void on_install_snapshot_start(const PeerId& peer_id); + void on_pre_send_snapshot(const PeerId& peer_id); BRAFT_MOCK int on_error(const Error& e); int64_t last_applied_index() const { return _last_applied_index.load(butil::memory_order_relaxed); diff --git a/src/braft/node.cpp b/src/braft/node.cpp index 50073be1..30e67a34 100644 --- a/src/braft/node.cpp +++ b/src/braft/node.cpp @@ -1365,8 +1365,8 @@ void NodeImpl::on_error(const Error& e) { lck.unlock(); } -void NodeImpl::install_snapshot_start(const PeerId& peer_id) { - _fsm_caller->on_install_snapshot_start(peer_id); +void NodeImpl::pre_send_snapshot(const PeerId& peer_id) { + _fsm_caller->on_pre_send_snapshot(peer_id); } diff --git a/src/braft/node.h b/src/braft/node.h index 0d239d07..e6230f02 100644 --- a/src/braft/node.h +++ b/src/braft/node.h @@ -242,8 +242,8 @@ friend class VoteBallotCtx; bool disable_cli() const { return _options.disable_cli; } bool is_witness() const { return _options.witness; } - // Called when leader start to install snapshot to remote peer - void install_snapshot_start(const PeerId& peer_id); + // Called when leader start to send snapshot to remote peer + void pre_send_snapshot(const PeerId& peer_id); private: friend class butil::RefCountedThreadSafe; diff --git a/src/braft/raft.cpp b/src/braft/raft.cpp index 9906dd90..c7c66ef6 100644 --- a/src/braft/raft.cpp +++ b/src/braft/raft.cpp @@ -313,7 +313,7 @@ void StateMachine::on_configuration_committed(const Configuration& conf, int64_t void StateMachine::on_stop_following(const LeaderChangeContext&) {} void StateMachine::on_start_following(const LeaderChangeContext&) {} -void StateMachine::on_install_snapshot_start(const PeerId& peer_id) {} +void StateMachine::on_pre_send_snapshot(const PeerId& peer_id) {} BootstrapOptions::BootstrapOptions() : last_log_index(0) diff --git a/src/braft/raft.h b/src/braft/raft.h index a56b8d83..335e5e58 100644 --- a/src/braft/raft.h +++ b/src/braft/raft.h @@ -268,7 +268,7 @@ class StateMachine { // Invoked when the leader start to send snapshot to |peer_id| // Default: Do nothing - virtual void on_install_snapshot_start(const PeerId& peer_id); + virtual void on_pre_send_snapshot(const PeerId& peer_id); }; diff --git a/src/braft/replicator.cpp b/src/braft/replicator.cpp index 7c14cbd2..faec0977 100644 --- a/src/braft/replicator.cpp +++ b/src/braft/replicator.cpp @@ -790,7 +790,7 @@ void Replicator::_install_snapshot() { return _block(butil::gettimeofday_us(), EBUSY); } - node_impl->install_snapshot_start(_options.peer_id); + node_impl->pre_send_snapshot(_options.peer_id); // pre-set replicator state to INSTALLING_SNAPSHOT, so replicator could be // blocked if something is wrong, such as throttled for a period of time From 547f583bd2ee3e9c044362930b3aa66d05bb06c8 Mon Sep 17 00:00:00 2001 From: lintanghui Date: Mon, 17 Feb 2025 16:12:51 +0800 Subject: [PATCH 3/8] add enable witness to leader to raft group --- src/braft/node.cpp | 1 + src/braft/raft.h | 1 + src/braft/replicator.cpp | 14 +++++++++++++- src/braft/replicator.h | 2 ++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/braft/node.cpp b/src/braft/node.cpp index cd702f42..11d00394 100644 --- a/src/braft/node.cpp +++ b/src/braft/node.cpp @@ -613,6 +613,7 @@ int NodeImpl::init(const NodeOptions& options) { rg_options.election_timeout_ms = _options.election_timeout_ms; rg_options.log_manager = _log_manager; rg_options.ballot_box = _ballot_box; + rg_options.raft_enable_witness_to_leader = _options.raft_enable_witness_to_leader; rg_options.node = this; rg_options.snapshot_throttle = _options.snapshot_throttle ? _options.snapshot_throttle->get() diff --git a/src/braft/raft.h b/src/braft/raft.h index cb80163a..0cb7d4c5 100644 --- a/src/braft/raft.h +++ b/src/braft/raft.h @@ -604,6 +604,7 @@ struct NodeOptions { // Default: false bool witness = false; // Construct a default instance + bool raft_enable_witness_to_leader; NodeOptions(); int get_catchup_timeout_ms(); diff --git a/src/braft/replicator.cpp b/src/braft/replicator.cpp index cb3b75ec..372c25da 100644 --- a/src/braft/replicator.cpp +++ b/src/braft/replicator.cpp @@ -630,6 +630,11 @@ int Replicator::_prepare_entry(int offset, EntryMeta* em, butil::IOBuf *data) { } else { CHECK(entry->type != ENTRY_TYPE_CONFIGURATION) << "log_index=" << log_index; } + // 优先使用group级别的配置 + if (is_witness() && !_options.raft_enable_witness_to_leader) { + entry->Release(); + return 0; + } if (!is_witness() || FLAGS_raft_enable_witness_to_leader) { em->set_data_len(entry->data.length()); data->append(entry->data); @@ -1382,6 +1387,7 @@ int ReplicatorGroup::init(const NodeId& node_id, const ReplicatorGroupOptions& o _election_timeout_ms = options.election_timeout_ms; _common_options.log_manager = options.log_manager; _common_options.ballot_box = options.ballot_box; + _common_options.raft_enable_witness_to_leader = options.raft_enable_witness_to_leader; _common_options.node = options.node; _common_options.term = 0; _common_options.group_id = node_id.group_id; @@ -1549,12 +1555,18 @@ int ReplicatorGroup::find_the_next_candidate( } const int64_t next_index = Replicator::get_next_index(iter->id_and_status.id); const int consecutive_error_times = Replicator::get_consecutive_error_times(iter->id_and_status.id); - if (consecutive_error_times == 0 && next_index > max_index && !iter->peer_id.is_witness()) { + if (consecutive_error_times == 0 && next_index > max_index) { max_index = next_index; if (peer_id) { *peer_id = iter->peer_id; } } + // transfer leadership to the non witness peer priority. + if (consecutive_error_times == 0 && next_index == max_index) { + if (peer_id && peer_id->is_witness()) { + *peer_id = iter->peer_id; + } + } } if (max_index == 0) { return -1; diff --git a/src/braft/replicator.h b/src/braft/replicator.h index 6ffd212a..cf109e7b 100644 --- a/src/braft/replicator.h +++ b/src/braft/replicator.h @@ -47,6 +47,7 @@ struct ReplicatorOptions { ReplicatorOptions(); int* dynamic_heartbeat_timeout_ms; int* election_timeout_ms; + bool raft_enable_witness_to_leader; GroupId group_id; PeerId server_id; PeerId peer_id; @@ -267,6 +268,7 @@ struct ReplicatorGroupOptions { ReplicatorGroupOptions(); int heartbeat_timeout_ms; int election_timeout_ms; + bool raft_enable_witness_to_leader; LogManager* log_manager; BallotBox* ballot_box; NodeImpl* node; From 573964b92d7af3b9d0e20d7aacaf870972ab3766 Mon Sep 17 00:00:00 2001 From: lintanghui Date: Mon, 17 Feb 2025 16:16:15 +0800 Subject: [PATCH 4/8] set raft_enable_witness_to_leader default to true --- src/braft/raft.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/braft/raft.h b/src/braft/raft.h index 0cb7d4c5..dbbf2a30 100644 --- a/src/braft/raft.h +++ b/src/braft/raft.h @@ -604,7 +604,7 @@ struct NodeOptions { // Default: false bool witness = false; // Construct a default instance - bool raft_enable_witness_to_leader; + bool raft_enable_witness_to_leader = true; NodeOptions(); int get_catchup_timeout_ms(); From 2b65ca14821aa361873a36d0d92b5f54d632bdc2 Mon Sep 17 00:00:00 2001 From: lintanghui Date: Mon, 17 Feb 2025 16:22:06 +0800 Subject: [PATCH 5/8] add conn pooled type for replica --- src/braft/replicator.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/braft/replicator.cpp b/src/braft/replicator.cpp index 372c25da..7a57d5b0 100644 --- a/src/braft/replicator.cpp +++ b/src/braft/replicator.cpp @@ -46,6 +46,8 @@ DEFINE_int32(raft_retry_replicate_interval_ms, 1000, "Interval of retry to append entries or install snapshot"); BRPC_VALIDATE_GFLAG(raft_retry_replicate_interval_ms, brpc::PositiveInteger); +DEFINE_bool(raft_use_conn_pool, true, "use conn pool for raft replicator"); +BRPC_VALIDATE_GFLAG(raft_use_conn_pool, ::brpc::PassValidate); DECLARE_bool(raft_enable_witness_to_leader); DECLARE_int64(raft_append_entry_high_lat_us); @@ -115,6 +117,9 @@ int Replicator::start(const ReplicatorOptions& options, ReplicatorId *id) { Replicator* r = new Replicator(); brpc::ChannelOptions channel_opt; channel_opt.connect_timeout_ms = FLAGS_raft_rpc_channel_connect_timeout_ms; + if (FLAGS_raft_use_conn_pool) { + channel_opt.connection_type = "pooled"; + } channel_opt.timeout_ms = -1; // We don't need RPC timeout if (r->_sending_channel.Init(options.peer_id.addr, &channel_opt) != 0) { LOG(ERROR) << "Fail to init sending channel" From 14b30e739063b0dccf4c046b9266e9b8ca5dce46 Mon Sep 17 00:00:00 2001 From: lintanghui Date: Tue, 18 Feb 2025 11:10:38 +0800 Subject: [PATCH 6/8] rename to send_data_to_witness --- .gitignore | 2 +- src/braft/node.cpp | 2 +- src/braft/raft.h | 2 +- src/braft/replicator.cpp | 4 ++-- src/braft/replicator.h | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index ab155bff..0f558000 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ /runtime /output /test/output - +/bld # Ignore hidden files .* *.swp diff --git a/src/braft/node.cpp b/src/braft/node.cpp index 11d00394..02f56a27 100644 --- a/src/braft/node.cpp +++ b/src/braft/node.cpp @@ -613,7 +613,7 @@ int NodeImpl::init(const NodeOptions& options) { rg_options.election_timeout_ms = _options.election_timeout_ms; rg_options.log_manager = _log_manager; rg_options.ballot_box = _ballot_box; - rg_options.raft_enable_witness_to_leader = _options.raft_enable_witness_to_leader; + rg_options.send_data_to_witness = _options.send_data_to_witness; rg_options.node = this; rg_options.snapshot_throttle = _options.snapshot_throttle ? _options.snapshot_throttle->get() diff --git a/src/braft/raft.h b/src/braft/raft.h index dbbf2a30..08d8a89b 100644 --- a/src/braft/raft.h +++ b/src/braft/raft.h @@ -604,7 +604,7 @@ struct NodeOptions { // Default: false bool witness = false; // Construct a default instance - bool raft_enable_witness_to_leader = true; + bool send_data_to_witness = true; NodeOptions(); int get_catchup_timeout_ms(); diff --git a/src/braft/replicator.cpp b/src/braft/replicator.cpp index 7a57d5b0..d59ecee0 100644 --- a/src/braft/replicator.cpp +++ b/src/braft/replicator.cpp @@ -636,7 +636,7 @@ int Replicator::_prepare_entry(int offset, EntryMeta* em, butil::IOBuf *data) { CHECK(entry->type != ENTRY_TYPE_CONFIGURATION) << "log_index=" << log_index; } // 优先使用group级别的配置 - if (is_witness() && !_options.raft_enable_witness_to_leader) { + if (is_witness() && !_options.send_data_to_witness) { entry->Release(); return 0; } @@ -1392,7 +1392,7 @@ int ReplicatorGroup::init(const NodeId& node_id, const ReplicatorGroupOptions& o _election_timeout_ms = options.election_timeout_ms; _common_options.log_manager = options.log_manager; _common_options.ballot_box = options.ballot_box; - _common_options.raft_enable_witness_to_leader = options.raft_enable_witness_to_leader; + _common_options.send_data_to_witness = options.send_data_to_witness; _common_options.node = options.node; _common_options.term = 0; _common_options.group_id = node_id.group_id; diff --git a/src/braft/replicator.h b/src/braft/replicator.h index cf109e7b..3e239f3c 100644 --- a/src/braft/replicator.h +++ b/src/braft/replicator.h @@ -47,7 +47,7 @@ struct ReplicatorOptions { ReplicatorOptions(); int* dynamic_heartbeat_timeout_ms; int* election_timeout_ms; - bool raft_enable_witness_to_leader; + bool send_data_to_witness; GroupId group_id; PeerId server_id; PeerId peer_id; @@ -268,7 +268,7 @@ struct ReplicatorGroupOptions { ReplicatorGroupOptions(); int heartbeat_timeout_ms; int election_timeout_ms; - bool raft_enable_witness_to_leader; + bool send_data_to_witness = true; LogManager* log_manager; BallotBox* ballot_box; NodeImpl* node; From 727d213037b7267f402b78359cd6db30ef6192b4 Mon Sep 17 00:00:00 2001 From: lintanghui Date: Tue, 18 Feb 2025 14:30:20 +0800 Subject: [PATCH 7/8] set raft_use_conn_pool default to false --- src/braft/replicator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/braft/replicator.cpp b/src/braft/replicator.cpp index c8f96ce7..48d87f92 100644 --- a/src/braft/replicator.cpp +++ b/src/braft/replicator.cpp @@ -46,7 +46,7 @@ DEFINE_int32(raft_retry_replicate_interval_ms, 1000, "Interval of retry to append entries or install snapshot"); BRPC_VALIDATE_GFLAG(raft_retry_replicate_interval_ms, brpc::PositiveInteger); -DEFINE_bool(raft_use_conn_pool, true, "use conn pool for raft replicator"); +DEFINE_bool(raft_use_conn_pool, false, "use conn pool for raft replicator"); BRPC_VALIDATE_GFLAG(raft_use_conn_pool, ::brpc::PassValidate); DECLARE_bool(raft_enable_witness_to_leader); From 6d6662d4ab3fbe4d391d6e71031e667e7f78c0ab Mon Sep 17 00:00:00 2001 From: lintanghui Date: Thu, 20 Feb 2025 14:46:48 +0800 Subject: [PATCH 8/8] update comment --- src/braft/fsm_caller.cpp | 4 ---- src/braft/fsm_caller.h | 1 - src/braft/node.cpp | 5 ----- src/braft/node.h | 3 --- src/braft/raft.cpp | 1 - src/braft/raft.h | 5 ----- src/braft/replicator.cpp | 4 +--- 7 files changed, 1 insertion(+), 22 deletions(-) diff --git a/src/braft/fsm_caller.cpp b/src/braft/fsm_caller.cpp index 8be576b6..98913eea 100644 --- a/src/braft/fsm_caller.cpp +++ b/src/braft/fsm_caller.cpp @@ -496,10 +496,6 @@ void FSMCaller::do_stop_following(const LeaderChangeContext& stop_following_cont _fsm->on_stop_following(stop_following_context); } -void FSMCaller::on_pre_send_snapshot(const PeerId& peer_id) { - _fsm->on_pre_send_snapshot(peer_id); -} - void FSMCaller::describe(std::ostream &os, bool use_html) { const char* newline = (use_html) ? "
" : "\n"; TaskType cur_task = _cur_task; diff --git a/src/braft/fsm_caller.h b/src/braft/fsm_caller.h index 6ad1c84e..897a50f9 100644 --- a/src/braft/fsm_caller.h +++ b/src/braft/fsm_caller.h @@ -116,7 +116,6 @@ class BAIDU_CACHELINE_ALIGNMENT FSMCaller { int on_leader_start(int64_t term, int64_t lease_epoch); int on_start_following(const LeaderChangeContext& start_following_context); int on_stop_following(const LeaderChangeContext& stop_following_context); - void on_pre_send_snapshot(const PeerId& peer_id); BRAFT_MOCK int on_error(const Error& e); int64_t last_applied_index() const { return _last_applied_index.load(butil::memory_order_relaxed); diff --git a/src/braft/node.cpp b/src/braft/node.cpp index 863f5444..02f56a27 100644 --- a/src/braft/node.cpp +++ b/src/braft/node.cpp @@ -1367,11 +1367,6 @@ void NodeImpl::on_error(const Error& e) { lck.unlock(); } -void NodeImpl::pre_send_snapshot(const PeerId& peer_id) { - _fsm_caller->on_pre_send_snapshot(peer_id); -} - - void NodeImpl::handle_vote_timeout() { std::unique_lock lck(_mutex); diff --git a/src/braft/node.h b/src/braft/node.h index e6230f02..b9dd3e82 100644 --- a/src/braft/node.h +++ b/src/braft/node.h @@ -241,9 +241,6 @@ friend class VoteBallotCtx; bool disable_cli() const { return _options.disable_cli; } bool is_witness() const { return _options.witness; } - - // Called when leader start to send snapshot to remote peer - void pre_send_snapshot(const PeerId& peer_id); private: friend class butil::RefCountedThreadSafe; diff --git a/src/braft/raft.cpp b/src/braft/raft.cpp index c7c66ef6..6069f706 100644 --- a/src/braft/raft.cpp +++ b/src/braft/raft.cpp @@ -313,7 +313,6 @@ void StateMachine::on_configuration_committed(const Configuration& conf, int64_t void StateMachine::on_stop_following(const LeaderChangeContext&) {} void StateMachine::on_start_following(const LeaderChangeContext&) {} -void StateMachine::on_pre_send_snapshot(const PeerId& peer_id) {} BootstrapOptions::BootstrapOptions() : last_log_index(0) diff --git a/src/braft/raft.h b/src/braft/raft.h index c73b97e4..08d8a89b 100644 --- a/src/braft/raft.h +++ b/src/braft/raft.h @@ -265,11 +265,6 @@ class StateMachine { // the very leader whom the follower starts to follow. // User can reset the node's information as it starts to follow some leader. virtual void on_start_following(const ::braft::LeaderChangeContext& ctx); - - // Invoked when the leader start to send snapshot to |peer_id| - // Default: Do nothing - virtual void on_pre_send_snapshot(const PeerId& peer_id); - }; enum State { diff --git a/src/braft/replicator.cpp b/src/braft/replicator.cpp index 48d87f92..175663ef 100644 --- a/src/braft/replicator.cpp +++ b/src/braft/replicator.cpp @@ -635,7 +635,7 @@ int Replicator::_prepare_entry(int offset, EntryMeta* em, butil::IOBuf *data) { } else { CHECK(entry->type != ENTRY_TYPE_CONFIGURATION) << "log_index=" << log_index; } - // 优先使用group级别的配置 + // use group-level configuration preferentially if (is_witness() && !_options.send_data_to_witness) { entry->Release(); return 0; @@ -800,8 +800,6 @@ void Replicator::_install_snapshot() { add_one_more_task(true)) { return _block(butil::gettimeofday_us(), EBUSY); } - - node_impl->pre_send_snapshot(_options.peer_id); // pre-set replicator state to INSTALLING_SNAPSHOT, so replicator could be // blocked if something is wrong, such as throttled for a period of time