@@ -326,7 +326,8 @@ impl<C: RaftTypeConfig, N: RaftNetworkFactory<C>, S: RaftStorage<C>> RaftCore<C,
326
326
} ;
327
327
328
328
let my_id = self . id ;
329
- let target_node = self . engine . state . membership_state . effective . get_node ( & target) . clone ( ) ;
329
+ // Safe unwrap(): target is in membership
330
+ let target_node = self . engine . state . membership_state . effective . get_node ( & target) . unwrap ( ) . clone ( ) ;
330
331
let mut client = match self . network . new_client ( target, & target_node) . await {
331
332
Ok ( n) => n,
332
333
Err ( e) => {
@@ -891,7 +892,12 @@ impl<C: RaftTypeConfig, N: RaftNetworkFactory<C>, S: RaftStorage<C>> RaftCore<C,
891
892
}
892
893
893
894
pub ( crate ) fn get_leader_node ( & self , leader_id : Option < C :: NodeId > ) -> Option < C :: Node > {
894
- leader_id. map ( |id| self . engine . state . membership_state . effective . get_node ( & id) . clone ( ) )
895
+ let leader_id = match leader_id {
896
+ None => return None ,
897
+ Some ( x) => x,
898
+ } ;
899
+
900
+ self . engine . state . membership_state . effective . get_node ( & leader_id) . cloned ( )
895
901
}
896
902
897
903
#[ tracing:: instrument( level = "debug" , skip_all) ]
@@ -979,7 +985,9 @@ impl<C: RaftTypeConfig, N: RaftNetworkFactory<C>, S: RaftStorage<C>> RaftCore<C,
979
985
target : C :: NodeId ,
980
986
matched : Option < LogId < C :: NodeId > > ,
981
987
) -> Result < ReplicationStream < C :: NodeId > , N :: ConnectionError > {
982
- let target_node = self . engine . state . membership_state . effective . get_node ( & target) ;
988
+ // Safe unwrap(): target must be in membership
989
+ let target_node = self . engine . state . membership_state . effective . get_node ( & target) . unwrap ( ) ;
990
+
983
991
let membership_log_id = self . engine . state . membership_state . effective . log_id ;
984
992
let network = self . network . new_client ( target, target_node) . await ?;
985
993
@@ -1125,7 +1133,9 @@ impl<C: RaftTypeConfig, N: RaftNetworkFactory<C>, S: RaftStorage<C>> RaftCore<C,
1125
1133
}
1126
1134
1127
1135
let req = vote_req. clone ( ) ;
1128
- let target_node = self . engine . state . membership_state . effective . get_node ( & target) . clone ( ) ;
1136
+
1137
+ // Safe unwrap(): target must be in membership
1138
+ let target_node = self . engine . state . membership_state . effective . get_node ( & target) . unwrap ( ) . clone ( ) ;
1129
1139
let mut client = match self . network . new_client ( target, & target_node) . await {
1130
1140
Ok ( n) => n,
1131
1141
Err ( err) => {
0 commit comments