Skip to content

Commit 103b8c6

Browse files
committed
Rename Raft RoleNode to NodeState
1 parent 9623364 commit 103b8c6

File tree

4 files changed

+45
-37
lines changed

4 files changed

+45
-37
lines changed

src/raft/node/candidate.rs

+10-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::super::{Address, Event, Message};
2-
use super::{rand_election_timeout, Follower, Leader, Node, NodeID, RoleNode, Term, Ticks};
2+
use super::{rand_election_timeout, Follower, Leader, Node, NodeID, NodeState, Term, Ticks};
33
use crate::error::{Error, Result};
44

55
use ::log::{debug, info, warn};
@@ -27,7 +27,7 @@ impl Candidate {
2727
}
2828
}
2929

30-
impl RoleNode<Candidate> {
30+
impl NodeState<Candidate> {
3131
/// Asserts internal invariants.
3232
fn assert(&mut self) -> Result<()> {
3333
self.assert_node()?;
@@ -47,7 +47,11 @@ impl RoleNode<Candidate> {
4747
/// Transforms the node into a follower. We either lost the election
4848
/// and follow the winner, or we discovered a new term in which case
4949
/// we step into it as a leaderless follower.
50-
fn become_follower(mut self, term: Term, leader: Option<NodeID>) -> Result<RoleNode<Follower>> {
50+
fn become_follower(
51+
mut self,
52+
term: Term,
53+
leader: Option<NodeID>,
54+
) -> Result<NodeState<Follower>> {
5155
assert!(term >= self.term, "Term regression {} -> {}", self.term, term);
5256

5357
if let Some(leader) = leader {
@@ -68,7 +72,7 @@ impl RoleNode<Candidate> {
6872
}
6973

7074
/// Transition to leader role.
71-
pub(super) fn become_leader(self) -> Result<RoleNode<Leader>> {
75+
pub(super) fn become_leader(self) -> Result<NodeState<Leader>> {
7276
info!("Won election for term {}, becoming leader", self.term);
7377
let peers = self.peers.clone();
7478
let (last_index, _) = self.log.get_last_index();
@@ -170,7 +174,7 @@ mod tests {
170174

171175
#[allow(clippy::type_complexity)]
172176
fn setup() -> Result<(
173-
RoleNode<Candidate>,
177+
NodeState<Candidate>,
174178
mpsc::UnboundedReceiver<Message>,
175179
mpsc::UnboundedReceiver<Instruction>,
176180
)> {
@@ -183,7 +187,7 @@ mod tests {
183187
log.commit(2)?;
184188
log.set_term(3, Some(1))?;
185189

186-
let mut node = RoleNode {
190+
let mut node = NodeState {
187191
id: 1,
188192
peers: HashSet::from([2, 3, 4, 5]),
189193
term: 3,

src/raft/node/follower.rs

+13-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::super::{Address, Event, Instruction, Message, RequestID, Response};
2-
use super::{rand_election_timeout, Candidate, Node, NodeID, RoleNode, Term, Ticks};
2+
use super::{rand_election_timeout, Candidate, Node, NodeID, NodeState, Term, Ticks};
33
use crate::error::{Error, Result};
44

55
use ::log::{debug, error, info, warn};
@@ -34,7 +34,7 @@ impl Follower {
3434
}
3535
}
3636

37-
impl RoleNode<Follower> {
37+
impl NodeState<Follower> {
3838
/// Asserts internal invariants.
3939
fn assert(&mut self) -> Result<()> {
4040
self.assert_node()?;
@@ -59,7 +59,7 @@ impl RoleNode<Follower> {
5959

6060
/// Transforms the node into a candidate, by campaigning for leadership in a
6161
/// new term.
62-
pub(super) fn become_candidate(mut self) -> Result<RoleNode<Candidate>> {
62+
pub(super) fn become_candidate(mut self) -> Result<NodeState<Candidate>> {
6363
// Abort any forwarded requests. These must be retried with new leader.
6464
self.abort_forwarded()?;
6565

@@ -70,7 +70,11 @@ impl RoleNode<Follower> {
7070

7171
/// Transforms the node into a follower, either a leaderless follower in a
7272
/// new term or following a leader in the current term.
73-
fn become_follower(mut self, leader: Option<NodeID>, term: Term) -> Result<RoleNode<Follower>> {
73+
fn become_follower(
74+
mut self,
75+
leader: Option<NodeID>,
76+
term: Term,
77+
) -> Result<NodeState<Follower>> {
7478
assert!(term >= self.term, "Term regression {} -> {}", self.term, term);
7579

7680
// Abort any forwarded requests. These must be retried with new leader.
@@ -268,17 +272,17 @@ pub mod tests {
268272
use crate::storage;
269273
use tokio::sync::mpsc;
270274

271-
pub fn follower_leader(node: &RoleNode<Follower>) -> Option<NodeID> {
275+
pub fn follower_leader(node: &NodeState<Follower>) -> Option<NodeID> {
272276
node.role.leader
273277
}
274278

275-
pub fn follower_voted_for(node: &RoleNode<Follower>) -> Option<NodeID> {
279+
pub fn follower_voted_for(node: &NodeState<Follower>) -> Option<NodeID> {
276280
node.role.voted_for
277281
}
278282

279283
#[allow(clippy::type_complexity)]
280284
fn setup() -> Result<(
281-
RoleNode<Follower>,
285+
NodeState<Follower>,
282286
mpsc::UnboundedReceiver<Message>,
283287
mpsc::UnboundedReceiver<Instruction>,
284288
)> {
@@ -291,7 +295,7 @@ pub mod tests {
291295
log.commit(2)?;
292296
log.set_term(3, None)?;
293297

294-
let node = RoleNode {
298+
let node = NodeState {
295299
id: 1,
296300
peers: HashSet::from([2, 3, 4, 5]),
297301
term: 3,
@@ -610,7 +614,7 @@ pub mod tests {
610614
log.append(2, Some(vec![0x03]))?;
611615
log.set_term(1, None)?;
612616

613-
let follower = RoleNode {
617+
let follower = NodeState {
614618
id: 1,
615619
peers: HashSet::from([2, 3, 4, 5]),
616620
term: 1,

src/raft/node/leader.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::super::{Address, Event, Index, Instruction, Message, Request, Response, Status};
2-
use super::{Follower, Node, NodeID, RoleNode, Term, Ticks, HEARTBEAT_INTERVAL};
2+
use super::{Follower, Node, NodeID, NodeState, Term, Ticks, HEARTBEAT_INTERVAL};
33
use crate::error::Result;
44

55
use ::log::{debug, info};
@@ -32,7 +32,7 @@ impl Leader {
3232
}
3333
}
3434

35-
impl RoleNode<Leader> {
35+
impl NodeState<Leader> {
3636
/// Asserts internal invariants.
3737
fn assert(&mut self) -> Result<()> {
3838
self.assert_node()?;
@@ -45,7 +45,7 @@ impl RoleNode<Leader> {
4545

4646
/// Transforms the leader into a follower. This can only happen if we find a
4747
/// new term, so we become a leaderless follower.
48-
fn become_follower(mut self, term: Term) -> Result<RoleNode<Follower>> {
48+
fn become_follower(mut self, term: Term) -> Result<NodeState<Follower>> {
4949
assert!(term >= self.term, "Term regression {} -> {}", self.term, term);
5050
assert!(term > self.term, "Can only become follower in later term");
5151

@@ -299,7 +299,7 @@ mod tests {
299299

300300
#[allow(clippy::type_complexity)]
301301
fn setup() -> Result<(
302-
RoleNode<Leader>,
302+
NodeState<Leader>,
303303
mpsc::UnboundedReceiver<Message>,
304304
mpsc::UnboundedReceiver<Instruction>,
305305
)> {
@@ -315,7 +315,7 @@ mod tests {
315315
log.commit(2)?;
316316
log.set_term(3, Some(1))?;
317317

318-
let node = RoleNode {
318+
let node = NodeState {
319319
id: 1,
320320
peers: peers.clone(),
321321
term: 3,

src/raft/node/mod.rs

+17-17
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ pub struct Status {
5050

5151
/// The local Raft node state machine.
5252
pub enum Node {
53-
Candidate(RoleNode<Candidate>),
54-
Follower(RoleNode<Follower>),
55-
Leader(RoleNode<Leader>),
53+
Candidate(NodeState<Candidate>),
54+
Follower(NodeState<Follower>),
55+
Leader(NodeState<Leader>),
5656
}
5757

5858
impl Node {
@@ -70,7 +70,7 @@ impl Node {
7070
tokio::spawn(driver.drive(state));
7171

7272
let (term, voted_for) = log.get_term()?;
73-
let node = RoleNode {
73+
let node = NodeState {
7474
id,
7575
peers,
7676
term,
@@ -115,26 +115,26 @@ impl Node {
115115
}
116116
}
117117

118-
impl From<RoleNode<Candidate>> for Node {
119-
fn from(rn: RoleNode<Candidate>) -> Self {
118+
impl From<NodeState<Candidate>> for Node {
119+
fn from(rn: NodeState<Candidate>) -> Self {
120120
Node::Candidate(rn)
121121
}
122122
}
123123

124-
impl From<RoleNode<Follower>> for Node {
125-
fn from(rn: RoleNode<Follower>) -> Self {
124+
impl From<NodeState<Follower>> for Node {
125+
fn from(rn: NodeState<Follower>) -> Self {
126126
Node::Follower(rn)
127127
}
128128
}
129129

130-
impl From<RoleNode<Leader>> for Node {
131-
fn from(rn: RoleNode<Leader>) -> Self {
130+
impl From<NodeState<Leader>> for Node {
131+
fn from(rn: NodeState<Leader>) -> Self {
132132
Node::Leader(rn)
133133
}
134134
}
135135

136136
// A Raft node with role R
137-
pub struct RoleNode<R> {
137+
pub struct NodeState<R> {
138138
id: NodeID,
139139
peers: HashSet<NodeID>,
140140
term: Term,
@@ -144,10 +144,10 @@ pub struct RoleNode<R> {
144144
role: R,
145145
}
146146

147-
impl<R> RoleNode<R> {
147+
impl<R> NodeState<R> {
148148
/// Transforms the node into another role.
149-
fn become_role<T>(self, role: T) -> RoleNode<T> {
150-
RoleNode {
149+
fn become_role<T>(self, role: T) -> NodeState<T> {
150+
NodeState {
151151
id: self.id,
152152
peers: self.peers,
153153
term: self.term,
@@ -369,16 +369,16 @@ mod tests {
369369
NodeAsserter::new(node)
370370
}
371371

372-
fn setup_rolenode() -> Result<(RoleNode<()>, mpsc::UnboundedReceiver<Message>)> {
372+
fn setup_rolenode() -> Result<(NodeState<()>, mpsc::UnboundedReceiver<Message>)> {
373373
setup_rolenode_peers(vec![2, 3])
374374
}
375375

376376
fn setup_rolenode_peers(
377377
peers: Vec<NodeID>,
378-
) -> Result<(RoleNode<()>, mpsc::UnboundedReceiver<Message>)> {
378+
) -> Result<(NodeState<()>, mpsc::UnboundedReceiver<Message>)> {
379379
let (node_tx, node_rx) = mpsc::unbounded_channel();
380380
let (state_tx, _) = mpsc::unbounded_channel();
381-
let node = RoleNode {
381+
let node = NodeState {
382382
role: (),
383383
id: 1,
384384
peers: HashSet::from_iter(peers),

0 commit comments

Comments
 (0)