@@ -920,12 +920,12 @@ handle_leader({transfer_leadership, ServerId},
920
920
? DEBUG (" ~ts : transfer leadership to ~w requested" ,
921
921
[LogId , ServerId ]),
922
922
% % TODO find a timeout
923
- gen_statem :cast (ServerId , try_become_leader ),
924
923
{await_condition ,
925
924
State #{condition =>
926
925
#{predicate_fun => fun transfer_leadership_condition /2 ,
927
- timeout => #{effects => [], transition_to => leader }}},
928
- [{reply , ok }]}
926
+ timeout => #{effects => [],
927
+ transition_to => leader }}},
928
+ [{reply , ok }, {send_msg , ServerId , election_timeout , cast }]}
929
929
end ;
930
930
handle_leader ({register_external_log_reader , Pid }, #{log := Log0 } = State ) ->
931
931
{Log , Effs } = ra_log :register_reader (Pid , Log0 ),
@@ -1113,7 +1113,8 @@ handle_pre_vote(#pre_vote_result{term = Term, vote_granted = true,
1113
1113
votes := Votes ,
1114
1114
cfg := # cfg {log_id = LogId },
1115
1115
pre_vote_token := Token ,
1116
- cluster := Nodes } = State0 ) ->
1116
+ cluster := Nodes ,
1117
+ membership := voter } = State0 ) ->
1117
1118
? DEBUG (" ~ts : pre_vote granted ~w for term ~b votes ~b " ,
1118
1119
[LogId , Token , Term , Votes + 1 ]),
1119
1120
NewVotes = Votes + 1 ,
@@ -1124,17 +1125,14 @@ handle_pre_vote(#pre_vote_result{term = Term, vote_granted = true,
1124
1125
_ ->
1125
1126
{pre_vote , State #{votes => NewVotes }, []}
1126
1127
end ;
1127
- handle_pre_vote (# pre_vote_result {vote_granted = false }, State ) ->
1128
+ handle_pre_vote (# pre_vote_result {}, State ) ->
1128
1129
% % just handle negative results to avoid printing an unhandled message log
1129
1130
{pre_vote , State , []};
1130
1131
handle_pre_vote (# pre_vote_rpc {} = PreVote , State ) ->
1131
1132
process_pre_vote (pre_vote , PreVote , State );
1132
1133
handle_pre_vote (# request_vote_result {}, State ) ->
1133
1134
% % handle to avoid logging as unhandled
1134
1135
{pre_vote , State , []};
1135
- handle_pre_vote (# pre_vote_result {}, State ) ->
1136
- % % handle to avoid logging as unhandled
1137
- {pre_vote , State , []};
1138
1136
handle_pre_vote (election_timeout , State ) ->
1139
1137
call_for_election (pre_vote , State );
1140
1138
handle_pre_vote ({ra_log_event , Evt }, State = #{log := Log0 }) ->
@@ -1360,15 +1358,15 @@ handle_follower({ra_log_event, Evt}, #{log := Log0,
1360
1358
handle_follower (# pre_vote_rpc {},
1361
1359
#{cfg := # cfg {log_id = LogId },
1362
1360
membership := Membership } = State ) when Membership =/= voter ->
1363
- ? DEBUG (" ~ts : follower ignored pre_vote_rpc, non-voter: ~p 0 " ,
1361
+ ? DEBUG (" ~ts : follower ignored pre_vote_rpc, non-voter: ~0p " ,
1364
1362
[LogId , Membership ]),
1365
1363
{follower , State , []};
1366
1364
handle_follower (# pre_vote_rpc {} = PreVote , State ) ->
1367
1365
process_pre_vote (follower , PreVote , State );
1368
1366
handle_follower (# request_vote_rpc {},
1369
1367
#{cfg := # cfg {log_id = LogId },
1370
1368
membership := Membership } = State ) when Membership =/= voter ->
1371
- ? DEBUG (" ~ts : follower ignored request_vote_rpc, non-voter: ~p 0 " ,
1369
+ ? DEBUG (" ~ts : follower ignored request_vote_rpc, non-voter: ~0p " ,
1372
1370
[LogId , Membership ]),
1373
1371
{follower , State , []};
1374
1372
handle_follower (# request_vote_rpc {candidate_id = Cand , term = Term },
@@ -1485,13 +1483,13 @@ handle_follower(#append_entries_reply{}, State) ->
1485
1483
handle_follower (election_timeout ,
1486
1484
#{cfg := # cfg {log_id = LogId },
1487
1485
membership := Membership } = State ) when Membership =/= voter ->
1488
- ? DEBUG (" ~ts : follower ignored election_timeout, non-voter: ~p 0 " ,
1486
+ ? INFO (" ~ts : follower ignored election_timeout, non-voter: ~0p " ,
1489
1487
[LogId , Membership ]),
1490
1488
{follower , State , []};
1491
1489
handle_follower (election_timeout , State ) ->
1492
1490
call_for_election (pre_vote , State );
1493
1491
handle_follower (try_become_leader , State ) ->
1494
- call_for_election ( pre_vote , State );
1492
+ handle_follower ( election_timeout , State );
1495
1493
handle_follower ({register_external_log_reader , Pid }, #{log := Log0 } = State ) ->
1496
1494
{Log , Effs } = ra_log :register_reader (Pid , Log0 ),
1497
1495
{follower , State #{log => Log }, Effs };
0 commit comments