Skip to content

Commit 3d2ffd1

Browse files
Jose-Angel Herrero Bajofacebook-github-bot
Jose-Angel Herrero Bajo
authored andcommitted
Make disable command a blocking call
Summary: as title Reviewed By: aravindanilango Differential Revision: D71050862 fbshipit-source-id: 60ca31ea56577bbb8b29040c4b67aae3bcc33888
1 parent d51693f commit 3d2ffd1

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/wa_raft_server.erl

+3-3
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ handover_candidates(Server) ->
510510

511511
-spec disable(Server :: gen_statem:server_ref(), Reason :: term()) -> ok | {error, ErrorReason :: atom()}.
512512
disable(Server, Reason) ->
513-
gen_statem:cast(Server, ?DISABLE_COMMAND(Reason)).
513+
gen_statem:call(Server, ?DISABLE_COMMAND(Reason), ?RAFT_RPC_CALL_TIMEOUT()).
514514

515515
-spec enable(Server :: gen_statem:server_ref()) -> ok | {error, ErrorReason :: atom()}.
516516
enable(Server) ->
@@ -1980,7 +1980,7 @@ command(StateName, {call, From}, ?ENABLE_COMMAND, #raft_state{name = Name, curre
19801980
[Name, CurrentTerm, StateName, From], #{domain => [whatsapp, wa_raft]}),
19811981
{keep_state_and_data, {reply, From, {error, already_enabled}}};
19821982
%% [Disable] All nodes should disable by setting RAFT state disable_reason.
1983-
command(StateName, cast, ?DISABLE_COMMAND(Reason), #raft_state{name = Name, self = ?IDENTITY_REQUIRES_MIGRATION(_, NodeId), current_term = CurrentTerm, leader_id = LeaderId} = State0) ->
1983+
command(StateName, {call, From}, ?DISABLE_COMMAND(Reason), #raft_state{name = Name, self = ?IDENTITY_REQUIRES_MIGRATION(_, NodeId), current_term = CurrentTerm, leader_id = LeaderId} = State0) ->
19841984
?LOG_NOTICE("Server[~0p, term ~0p, ~0p] disabling due to reason ~p.",
19851985
[Name, CurrentTerm, StateName, Reason], #{domain => [whatsapp, wa_raft]}),
19861986
State1 = State0#raft_state{disable_reason = Reason},
@@ -1989,7 +1989,7 @@ command(StateName, cast, ?DISABLE_COMMAND(Reason), #raft_state{name = Name, self
19891989
false -> State1
19901990
end,
19911991
wa_raft_durable_state:store(State2),
1992-
{next_state, disabled, State2};
1992+
{next_state, disabled, State2, {reply, From, ok}};
19931993
%% [Fallback] Drop unknown command calls.
19941994
command(StateName, Type, Event, #raft_state{name = Name, current_term = CurrentTerm}) ->
19951995
?LOG_NOTICE("Server[~0p, term ~0p, ~0p] dropping unhandled command ~p event ~p",

0 commit comments

Comments
 (0)