@@ -2,7 +2,7 @@ use super::super::{Address, Event, Instruction, Log, Message, RequestID, Respons
2
2
use super :: { rand_election_timeout, Candidate , Node , NodeID , RawNode , Role , Term , Ticks } ;
3
3
use crate :: error:: { Error , Result } ;
4
4
5
- use :: log:: { debug, error , info, warn } ;
5
+ use :: log:: { debug, info} ;
6
6
use std:: collections:: HashSet ;
7
7
use tokio:: sync:: mpsc;
8
8
@@ -205,13 +205,14 @@ impl RawNode<Follower> {
205
205
}
206
206
}
207
207
208
+ // We may receive a vote after we lost an election and followed a
209
+ // different leader. Ignore it.
210
+ Event :: GrantVote => { }
211
+
208
212
// Forward client requests to the leader, or abort them if there is
209
213
// none (the client must retry).
210
214
Event :: ClientRequest { ref id, .. } => {
211
- if msg. from != Address :: Client {
212
- error ! ( "Received client request from non-client {:?}" , msg. from) ;
213
- return Ok ( self . into ( ) ) ;
214
- }
215
+ assert_eq ! ( msg. from, Address :: Client , "Client request from non-client" ) ;
215
216
216
217
let id = id. clone ( ) ;
217
218
if let Some ( leader) = self . role . leader {
@@ -225,10 +226,7 @@ impl RawNode<Follower> {
225
226
226
227
// Returns client responses for forwarded requests.
227
228
Event :: ClientResponse { id, mut response } => {
228
- if !self . is_leader ( & msg. from ) {
229
- error ! ( "Received client response from non-leader {:?}" , msg. from) ;
230
- return Ok ( self . into ( ) ) ;
231
- }
229
+ assert ! ( self . is_leader( & msg. from) , "Client response from non-leader" ) ;
232
230
233
231
// TODO: Get rid of this field, it should be returned at the RPC
234
232
// server level instead.
@@ -243,8 +241,7 @@ impl RawNode<Follower> {
243
241
// We're not a leader nor candidate in this term, so we shoudn't see these.
244
242
Event :: ConfirmLeader { .. }
245
243
| Event :: AcceptEntries { .. }
246
- | Event :: RejectEntries { .. }
247
- | Event :: GrantVote { .. } => warn ! ( "Received unexpected message {:?}" , msg) ,
244
+ | Event :: RejectEntries { .. } => panic ! ( "Received unexpected message {:?}" , msg) ,
248
245
} ;
249
246
Ok ( self . into ( ) )
250
247
}
0 commit comments