MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / add_learner

Method add_learner

nodedb-raft/src/node/membership.rs:96–116  ·  view source on GitHub ↗

Add a non-voting learner peer. Learners receive replicated log entries but do not vote and do not count toward the commit quorum. If this node is currently the leader, the learner is immediately added to `LeaderState` replication tracking so the next heartbeat ships entries to it. No-op if `peer` is self, already a voter, or already a learner.

(&mut self, peer: u64)

Source from the content-addressed store, hash-verified

94 ///
95 /// No-op if `peer` is self, already a voter, or already a learner.
96 pub fn add_learner(&mut self, peer: u64) {
97 if peer == self.config.node_id
98 || self.config.peers.contains(&peer)
99 || self.config.learners.contains(&peer)
100 {
101 return;
102 }
103
104 let last_index = self.log.last_index();
105 if let Some(ref mut leader) = self.leader_state {
106 leader.add_peer(peer, last_index);
107 }
108 self.config.learners.push(peer);
109
110 info!(
111 node = self.config.node_id,
112 group = self.config.group_id,
113 peer,
114 "added learner peer"
115 );
116 }
117
118 /// Remove a learner peer (e.g., join was rolled back before promotion).
119 pub fn remove_learner(&mut self, peer: u64) {

Calls 4

last_indexMethod · 0.80
containsMethod · 0.45
add_peerMethod · 0.45
pushMethod · 0.45