From fbc0a9eaaf8a1e40fb00ef29a0e810e145111d0b Mon Sep 17 00:00:00 2001 From: nolouch Date: Wed, 24 Apr 2019 15:21:19 +0800 Subject: [PATCH] address comments Signed-off-by: nolouch --- src/raft.rs | 29 ++++++++++++++++------------ tests/integration_cases/test_raft.rs | 28 +++++++++++++++------------ 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/raft.rs b/src/raft.rs index 2b095186b..e70d6d086 100644 --- a/src/raft.rs +++ b/src/raft.rs @@ -1691,19 +1691,24 @@ impl Raft { } } } - } else if m.get_from() == INVALID_ID || m.get_from() == self.id { - let rs = ReadState { - index: self.raft_log.committed, - request_ctx: m.take_entries()[0].take_data(), - }; - self.read_states.push(rs); } else { - let mut to_send = Message::default(); - to_send.set_to(m.get_from()); - to_send.set_msg_type(MessageType::MsgReadIndexResp); - to_send.set_index(self.raft_log.committed); - to_send.set_entries(m.take_entries()); - self.send(to_send); + // there is only one voting member (the leader) in the cluster + if m.get_from() == INVALID_ID || m.get_from() == self.id { + // from leader itself + let rs = ReadState { + index: self.raft_log.committed, + request_ctx: m.take_entries()[0].take_data(), + }; + self.read_states.push(rs); + } else { + // from learner member + let mut to_send = Message::default(); + to_send.set_to(m.get_from()); + to_send.set_msg_type(MessageType::MsgReadIndexResp); + to_send.set_index(self.raft_log.committed); + to_send.set_entries(m.take_entries()); + self.send(to_send); + } } return Ok(()); } diff --git a/tests/integration_cases/test_raft.rs b/tests/integration_cases/test_raft.rs index 4af3162f1..fdabaed43 100644 --- a/tests/integration_cases/test_raft.rs +++ b/tests/integration_cases/test_raft.rs @@ -2241,20 +2241,24 @@ fn test_read_only_with_learner() { .read_states .drain(..) .collect(); - if read_states.is_empty() { - panic!("#{}: read_states is empty, want non-empty", i); - } + assert_eq!( + read_states.is_empty(), + false, + "#{}: read_states is empty, want non-empty", + i + ); let rs = &read_states[0]; - if rs.index != wri { - panic!("#{}: read_index = {}, want {}", i, rs.index, wri) - } + assert_eq!( + rs.index, wri, + "#{}: read_index = {}, want {}", + i, rs.index, wri + ); let vec_wctx = wctx.as_bytes().to_vec(); - if rs.request_ctx != vec_wctx { - panic!( - "#{}: request_ctx = {:?}, want {:?}", - i, rs.request_ctx, vec_wctx - ) - } + assert_eq!( + rs.request_ctx, vec_wctx, + "#{}: request_ctx = {:?}, want {:?}", + i, rs.request_ctx, vec_wctx + ); } }