5151 promote_checkpoint /2 ,
5252 checkpoint /3 ,
5353 persist_last_applied /1 ,
54+ peers /1 ,
5455 update_peer /3 ,
5556 update_disconnected_peers /3 ,
5657 handle_down /5 ,
168169 {cast , ra_server_id (), term ()} |
169170 {send_vote_requests , [{ra_server_id (),
170171 # request_vote_rpc {} | # pre_vote_rpc {}}]} |
171- {send_rpc , ra_server_id (), # append_entries_rpc {}} |
172+ {send_rpc , ra_server_id (),
173+ # append_entries_rpc {} |
174+ # heartbeat_rpc {} |
175+ # info_rpc {}} |
172176 {send_snapshot , To :: ra_server_id (),
173177 {Module :: module (), Ref :: term (),
174178 LeaderId :: ra_server_id (), Term :: ra_term ()}} |
@@ -477,7 +481,7 @@ handle_leader({PeerId, #append_entries_reply{term = Term, success = true,
477481 ? WARN (" ~ts : saw append_entries_reply from unknown peer ~w " ,
478482 [LogId , PeerId ]),
479483 {leader , State0 , []};
480- Peer0 = #{match_index := MI , next_index := NI } ->
484+ #{match_index := MI , next_index := NI } = Peer0 ->
481485 Peer = Peer0 #{match_index => max (MI , LastIdx ),
482486 next_index => max (NI , NextIdx )},
483487 State1 = put_peer (PeerId , Peer , State0 ),
@@ -1639,15 +1643,19 @@ handle_receive_snapshot(#append_entries_rpc{term = Term} = Msg,
16391643 {follower , update_term (Term , clear_leader_id (State #{log => Log })),
16401644 [{next_event , Msg }]};
16411645handle_receive_snapshot ({ra_log_event , Evt },
1642- State = #{cfg := # cfg {id = _Id , log_id = LogId },
1643- log := Log0 }) ->
1646+ #{cfg := # cfg {log_id = LogId },
1647+ log := Log0 } = State ) ->
16441648 ? DEBUG (" ~ts : ~s ra_log_event received: ~w " ,
16451649 [LogId , ? FUNCTION_NAME , Evt ]),
16461650 % simply forward all other events to ra_log
16471651 % whilst the snapshot is being received
16481652 {Log , Effects } = ra_log :handle_event (Evt , Log0 ),
16491653 {receive_snapshot , State #{log => Log }, Effects };
1650- handle_receive_snapshot (receive_snapshot_timeout , #{log := Log0 } = State ) ->
1654+ handle_receive_snapshot (receive_snapshot_timeout ,
1655+ #{cfg := # cfg {log_id = LogId },
1656+ log := Log0 } = State ) ->
1657+ ? INFO (" ~ts : ~s receive snapshot timed out." ,
1658+ [LogId , ? FUNCTION_NAME ]),
16511659 SnapState0 = ra_log :snapshot_state (Log0 ),
16521660 SnapState = ra_snapshot :abort_accept (SnapState0 ),
16531661 Log = ra_log :set_snapshot_state (SnapState , Log0 ),
@@ -3312,7 +3320,8 @@ heartbeat_rpc_effects(Peers, Id, Term, QueryIndex) ->
33123320 end ,
33133321 maps :to_list (Peers )).
33143322
3315- heartbeat_rpc_effect_for_peer (PeerId , Peer , Id , Term , QueryIndex ) ->
3323+ heartbeat_rpc_effect_for_peer (PeerId , #{status := normal } = Peer ,
3324+ Id , Term , QueryIndex ) ->
33163325 case maps :get (query_index , Peer , 0 ) < QueryIndex of
33173326 true ->
33183327 {true ,
@@ -3322,7 +3331,9 @@ heartbeat_rpc_effect_for_peer(PeerId, Peer, Id, Term, QueryIndex) ->
33223331 leader_id = Id }}};
33233332 false ->
33243333 false
3325- end .
3334+ end ;
3335+ heartbeat_rpc_effect_for_peer (_PeerId , _Peer , _Id , _Term , _QueryIndex ) ->
3336+ false .
33263337
33273338heartbeat_rpc_quorum (NewQueryIndex , PeerId ,
33283339 #{queries_waiting_heartbeats := Waiting0 } = State ) ->
0 commit comments