Remove a node from a group's voter and learner lists. If the removed node was the current leader hint, the hint is cleared so the next query drives a fresh discovery. Returns `true` if the group existed and anything was actually removed. The caller is responsible for safety: dropping below the configured replication factor must be gated by `decommission::safety::check_can_decommission`.
(&mut self, group_id: u64, node_id: u64)
| 194 | /// configured replication factor must be gated by |
| 195 | /// `decommission::safety::check_can_decommission`. |
| 196 | pub fn remove_group_member(&mut self, group_id: u64, node_id: u64) -> bool { |
| 197 | let Some(info) = self.group_members.get_mut(&group_id) else { |
| 198 | return false; |
| 199 | }; |
| 200 | let before_members = info.members.len(); |
| 201 | let before_learners = info.learners.len(); |
| 202 | info.members.retain(|&id| id != node_id); |
| 203 | info.learners.retain(|&id| id != node_id); |
| 204 | if info.leader == node_id { |
| 205 | info.leader = 0; |
| 206 | } |
| 207 | info.members.len() != before_members || info.learners.len() != before_learners |
| 208 | } |
| 209 | |
| 210 | /// Update the learner list for a Raft group. |
| 211 | pub fn set_group_learners(&mut self, group_id: u64, learners: Vec<u64>) { |
no test coverage detected