Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions benches/suites/raft.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ fn quick_raft(storage: MemStorage, logger: &slog::Logger) -> Raft<MemStorage> {

pub fn bench_raft_new(c: &mut Criterion) {
DEFAULT_RAFT_SETS.iter().for_each(|(voters, learners)| {
c.bench_function(&format!("Raft::new ({}, {})", voters, learners), move |b| {
c.bench_function(&format!("Raft::new ({voters}, {learners})"), move |b| {
let logger = raft::default_logger();
let storage = new_storage(*voters, *learners);
b.iter(|| quick_raft(storage.clone(), &logger))
Expand All @@ -51,7 +51,7 @@ pub fn bench_raft_campaign(c: &mut Criterion) {
// Skip the first since it's 0,0
for msg in msgs {
c.bench_function(
&format!("Raft::campaign ({}, {}, {})", voters, learners, msg),
&format!("Raft::campaign ({voters}, {learners}, {msg})"),
move |b| {
let logger = raft::default_logger();
let storage = new_storage(*voters, *learners);
Expand Down
4 changes: 2 additions & 2 deletions datadriven/src/line_sparser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ pub fn parse_line(line: &str, logger: &slog::Logger) -> Result<(String, Vec<CmdA
})
}
}
_ => bail!("unknown argument format: {}", arg),
_ => bail!("unknown argument format: {arg}"),
}
}

Expand Down Expand Up @@ -108,7 +108,7 @@ mod tests {
let line = "cmd a=1 b=(2,3) c= d";
let (cmd, cmd_args) = parse_line(line, &logger)?;
assert_eq!(cmd, "cmd");
assert_eq!(format!("{:?}", cmd_args), "[a=1, b=(2,3), c=, d]");
assert_eq!(format!("{cmd_args:?}"), "[a=1, b=(2,3), c=, d]");

Ok(())
}
Expand Down
2 changes: 1 addition & 1 deletion examples/five_mem_node/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,7 @@ impl Proposal {
fn propose(raft_group: &mut RawNode<MemStorage>, proposal: &mut Proposal) {
let last_index1 = raft_group.raft.raft_log.last_index() + 1;
if let Some((ref key, ref value)) = proposal.normal {
let data = format!("put {} {}", key, value).into_bytes();
let data = format!("put {key} {value}").into_bytes();
let _ = raft_group.propose(vec![], data);
} else if let Some(ref cc) = proposal.conf_change {
let _ = raft_group.propose_conf_change(vec![], cc.clone());
Expand Down
42 changes: 20 additions & 22 deletions harness/tests/integration_cases/test_raft.rs
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@ fn test_leader_election_pre_vote() {
fn test_leader_election_with_config(pre_vote: bool, l: &Logger) {
let mut config = Network::default_config();
config.pre_vote = pre_vote;
let mut tests = vec![
let mut tests = [
(
Network::new_with_config(vec![None, None, None], &config, l),
StateRole::Leader,
Expand Down Expand Up @@ -763,7 +763,7 @@ fn test_vote_from_any_state_for_type(vt: MessageType, l: &Logger) {
#[test]
fn test_log_replication() {
let l = default_logger();
let mut tests = vec![
let mut tests = [
(
Network::new(vec![None, None, None], &l),
vec![new_message(1, 1, MessageType::MsgPropose, 1)],
Expand Down Expand Up @@ -936,7 +936,7 @@ fn test_dueling_candidates() {
panic!("#{}: term = {}, want {}", i, nt.peers[&id].term, term);
}

let prefix = format!("#{}: ", i);
let prefix = format!("#{i}: ");
assert_raft_log(&prefix, &nt.peers[&id].raft_log, raft_log);
}
}
Expand Down Expand Up @@ -984,7 +984,7 @@ fn test_dueling_pre_candidates() {
if nt.peers[&id].term != term {
panic!("#{}: term = {}, want {}", i, nt.peers[&id].term, term);
}
let prefix = format!("#{}: ", i);
let prefix = format!("#{i}: ");
assert_raft_log(&prefix, &nt.peers[&id].raft_log, raft_log);
}
}
Expand Down Expand Up @@ -1102,7 +1102,7 @@ fn test_proposal() {

for p in nw.peers.values() {
if let Some(ref raft) = p.raft {
let prefix = format!("#{}: ", j);
let prefix = format!("#{j}: ");
assert_raft_log(&prefix, &raft.raft_log, want_log);
}
}
Expand All @@ -1115,7 +1115,7 @@ fn test_proposal() {
#[test]
fn test_proposal_by_proxy() {
let l = default_logger();
let mut tests = vec![
let mut tests = [
Network::new(vec![None, None, None], &l),
Network::new(vec![None, None, NOP_STEPPER], &l),
];
Expand All @@ -1131,7 +1131,7 @@ fn test_proposal_by_proxy() {
continue;
}
if let Some(ref raft) = p.raft {
let prefix = format!("#{}: ", j);
let prefix = format!("#{j}: ");
assert_raft_log(&prefix, &raft.raft_log, (2, 0, 2));
}
}
Expand Down Expand Up @@ -3157,7 +3157,7 @@ fn test_new_leader_pending_config() {
i, r.pending_conf_index, wpending_index
);
}
assert_eq!(r.has_pending_conf(), add_entry, "#{}: ", i);
assert_eq!(r.has_pending_conf(), add_entry, "#{i}: ");
}
}

Expand Down Expand Up @@ -5372,7 +5372,7 @@ fn test_election_after_change_priority() {
network.send(vec![new_message(id, id, MessageType::MsgHup, 0)]);

// check state
assert_eq!(network.peers[&id].state, state, "peer {} state", id);
assert_eq!(network.peers[&id].state, state, "peer {id} state");
}
}

Expand Down Expand Up @@ -5799,38 +5799,36 @@ fn test_fast_log_rejection() {
.unwrap();

let mut msgs = n2.read_messages();
assert_eq!(msgs.len(), 1, "#{}", i);
assert_eq!(msgs.len(), 1, "#{i}");
assert_eq!(
msgs[0].get_msg_type(),
MessageType::MsgHeartbeatResponse,
"#{}",
i
"#{i}"
);
// move Vec item by pop
n1.step(msgs.pop().unwrap()).unwrap();

let mut msgs = n1.read_messages();
assert_eq!(msgs.len(), 1, "#{}", i);
assert_eq!(msgs[0].get_msg_type(), MessageType::MsgAppend, "#{}", i);
assert_eq!(msgs.len(), 1, "#{i}");
assert_eq!(msgs[0].get_msg_type(), MessageType::MsgAppend, "#{i}");
n2.step(msgs.pop().unwrap()).unwrap();

let mut msgs = n2.read_messages();
assert_eq!(msgs.len(), 1, "#{}", i);
assert_eq!(msgs.len(), 1, "#{i}");
assert_eq!(
msgs[0].get_msg_type(),
MessageType::MsgAppendResponse,
"#{}",
i
"#{i}"
);
assert!(msgs[0].reject, "#{}", i);
assert_eq!(msgs[0].reject_hint, reject_hint_index, "#{}", i);
assert_eq!(msgs[0].log_term, reject_hint_term, "#{}", i);
assert_eq!(msgs[0].reject_hint, reject_hint_index, "#{i}");
assert_eq!(msgs[0].log_term, reject_hint_term, "#{i}");
n1.step(msgs.pop().unwrap()).unwrap();

let msgs = n1.read_messages();
assert_eq!(msgs.len(), 1, "#{}", i);
assert_eq!(msgs[0].log_term, next_append_term, "#{}", i);
assert_eq!(msgs[0].index, next_append_index, "#{}", i);
assert_eq!(msgs.len(), 1, "#{i}");
assert_eq!(msgs[0].log_term, next_append_term, "#{i}");
assert_eq!(msgs[0].index, next_append_index, "#{i}");
}
}

Expand Down
10 changes: 5 additions & 5 deletions harness/tests/integration_cases/test_raft_paper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ fn test_leader_bcast_beat() {
}

let mut msgs = r.read_messages();
msgs.sort_by_key(|m| format!("{:?}", m));
msgs.sort_by_key(|m| format!("{m:?}"));

let new_message_ext = |f, to| {
let mut m = new_message(f, to, MessageType::MsgHeartbeat, 0);
Expand Down Expand Up @@ -179,7 +179,7 @@ fn test_nonleader_start_election(state: StateRole, l: &Logger) {
assert_eq!(r.state, StateRole::Candidate);
assert!(r.prs().votes()[&r.id]);
let mut msgs = r.read_messages();
msgs.sort_by_key(|m| format!("{:?}", m));
msgs.sort_by_key(|m| format!("{m:?}"));
let new_message_ext = |f, to| {
let mut m = new_message(f, to, MessageType::MsgRequestVote, 0);
m.term = 2;
Expand Down Expand Up @@ -437,7 +437,7 @@ fn test_leader_start_replication() {
assert_eq!(r.raft_log.last_index(), li + 1);
assert_eq!(r.raft_log.committed, li);
let mut msgs = r.read_messages();
msgs.sort_by_key(|m| format!("{:?}", m));
msgs.sort_by_key(|m| format!("{m:?}"));
let wents = vec![new_entry(1, li + 1, SOME_DATA)];
let new_message_ext = |f, to, ents| {
let mut m = new_message(f, to, MessageType::MsgAppend, 0);
Expand Down Expand Up @@ -484,7 +484,7 @@ fn test_leader_commit_entry() {
let wents = vec![new_entry(1, li + 1, SOME_DATA)];
assert_eq!(r.raft_log.next_entries(None), Some(wents));
let mut msgs = r.read_messages();
msgs.sort_by_key(|m| format!("{:?}", m));
msgs.sort_by_key(|m| format!("{m:?}"));
for (i, m) in msgs.drain(..).enumerate() {
assert_eq!(i as u64 + 2, m.to);
assert_eq!(m.get_msg_type(), MessageType::MsgAppend);
Expand Down Expand Up @@ -923,7 +923,7 @@ fn test_vote_request() {
}

let mut msgs = r.read_messages();
msgs.sort_by_key(|m| format!("{:?}", m));
msgs.sort_by_key(|m| format!("{m:?}"));
if msgs.len() != 2 {
panic!("#{}: msg count = {}, want 2", j, msgs.len());
}
Expand Down
2 changes: 1 addition & 1 deletion harness/tests/integration_cases/test_raw_node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ fn test_raw_node_step() {
let res = raw_node.step(new_message(0, 0, *msg_t, 0));
// LocalMsg should be ignored.
if raw_node::is_local_msg(*msg_t) {
assert_eq!(res, Err(Error::StepLocalMsg), "{:?}", msg_t);
assert_eq!(res, Err(Error::StepLocalMsg), "{msg_t:?}");
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion harness/tests/test_util/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ pub fn ltoa(raft_log: &RaftLog<MemStorage>) -> String {
let mut s = format!("committed: {}\n", raft_log.committed);
s = s + &format!("applied: {}\n", raft_log.applied);
for (i, e) in raft_log.all_entries().iter().enumerate() {
s = s + &format!("#{}: {:?}\n", i, e);
s = s + &format!("#{i}: {e:?}\n");
}
s
}
Expand Down
4 changes: 2 additions & 2 deletions proto/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use protobuf_build::Builder;
fn main() {
let base = std::env::var("CARGO_MANIFEST_DIR").unwrap_or_else(|_| ".".to_string());
Builder::new()
.search_dir_for_protos(&format!("{}/proto", base))
.includes(&[format!("{}/include", base), format!("{}/proto", base)])
.search_dir_for_protos(&format!("{base}/proto"))
.includes(&[format!("{base}/include"), format!("{base}/proto")])
.include_google_protos()
.generate()
}
6 changes: 3 additions & 3 deletions proto/src/confchange.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,19 @@ pub fn parse_conf_change(s: &str) -> Result<Vec<ConfChangeSingle>, String> {
let splits = s.split_ascii_whitespace();
for tok in splits {
if tok.len() < 2 {
return Err(format!("unknown token {}", tok));
return Err(format!("unknown token {tok}"));
}
let mut cc = ConfChangeSingle::default();
let mut chars = tok.chars();
cc.set_change_type(match chars.next().unwrap() {
'v' => ConfChangeType::AddNode,
'l' => ConfChangeType::AddLearnerNode,
'r' => ConfChangeType::RemoveNode,
_ => return Err(format!("unknown token {}", tok)),
_ => return Err(format!("unknown token {tok}")),
});
cc.node_id = match chars.as_str().parse() {
Ok(id) => id,
Err(e) => return Err(format!("parse token {} fail: {}", tok, e)),
Err(e) => return Err(format!("parse token {tok} fail: {e}")),
};
ccs.push(cc);
}
Expand Down
21 changes: 7 additions & 14 deletions src/confchange/changer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,7 @@ impl Changer<'_> {
let (mut cfg, mut prs) = self.check_and_copy()?;
if cfg.voters().outgoing.is_empty() {
return Err(Error::ConfChangeError(format!(
"configuration is not joint: {:?}",
cfg
"configuration is not joint: {cfg:?}"
)));
}
cfg.learners.extend(cfg.learners_next.drain());
Expand Down Expand Up @@ -294,46 +293,40 @@ fn check_invariants(cfg: &Configuration, prs: &IncrChangeMap) -> Result<()> {
for id in cfg.voters().ids().iter() {
if !prs.contains(id) {
return Err(Error::ConfChangeError(format!(
"no progress for voter {}",
id
"no progress for voter {id}"
)));
}
}
for id in &cfg.learners {
if !prs.contains(*id) {
return Err(Error::ConfChangeError(format!(
"no progress for learner {}",
id
"no progress for learner {id}"
)));
}
// Conversely Learners and Voters doesn't intersect at all.
if cfg.voters().outgoing.contains(id) {
return Err(Error::ConfChangeError(format!(
"{} is in learners and outgoing voters",
id
"{id} is in learners and outgoing voters"
)));
}
if cfg.voters().incoming.contains(id) {
return Err(Error::ConfChangeError(format!(
"{} is in learners and incoming voters",
id
"{id} is in learners and incoming voters"
)));
}
}
for id in &cfg.learners_next {
if !prs.contains(*id) {
return Err(Error::ConfChangeError(format!(
"no progress for learner(next) {}",
id
"no progress for learner(next) {id}"
)));
}

// Any staged learner was staged because it could not be directly added due
// to a conflicting voter in the outgoing config.
if !cfg.voters().outgoing.contains(id) {
return Err(Error::ConfChangeError(format!(
"{} is in learners_next and outgoing voters",
id
"{id} is in learners_next and outgoing voters"
)));
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/confchange/datadriven_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ fn test_conf_change_data_driven() -> anyhow::Result<()> {
let mut buffer = String::new();

let conf = tr.conf();
writeln!(buffer, "{}", conf).unwrap();
writeln!(buffer, "{conf}").unwrap();

let prs = tr.progress();

Expand Down
3 changes: 1 addition & 2 deletions src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,7 @@ impl Config {

if min_timeout >= max_timeout {
return Err(Error::ConfigInvalid(format!(
"min election tick {} should be less than max election tick {}",
min_timeout, max_timeout
"min election tick {min_timeout} should be less than max election tick {max_timeout}"
)));
}

Expand Down
6 changes: 3 additions & 3 deletions src/quorum.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@ impl Display for Index {
match self.group_id {
0 => match self.index {
u64::MAX => write!(f, "∞"),
index => write!(f, "{}", index),
index => write!(f, "{index}"),
},
group_id => match self.index {
u64::MAX => write!(f, "[{}]∞", group_id),
index => write!(f, "[{}]{}", group_id, index),
u64::MAX => write!(f, "[{group_id}]∞"),
index => write!(f, "[{group_id}]{index}"),
},
}
}
Expand Down
Loading