diff --git a/src/ra_server_proc.erl b/src/ra_server_proc.erl index 77576f42..23fef290 100644 --- a/src/ra_server_proc.erl +++ b/src/ra_server_proc.erl @@ -517,10 +517,11 @@ leader(info, {update_peer, PeerId, Update}, State0) -> {keep_state, State, []}; leader(_, tick_timeout, State0) -> {State1, RpcEffs} = make_rpcs(State0), - ServerState = State1#state.server_state, - Effects = ra_server:tick(ServerState), + ServerState0 = State1#state.server_state, + Effects = ra_server:tick(ServerState0), + ServerState = ra_server:log_tick(ServerState0), {State2, Actions} = ?HANDLE_EFFECTS(RpcEffs ++ Effects ++ [{aux, tick}], - cast, State1), + cast, State1#state{server_state = ServerState}), %% try sending any pending applied notifications again State = send_applied_notifications(State2, #{}), {keep_state, handle_tick_metrics(State), @@ -791,8 +792,10 @@ follower(info, {node_event, Node, up}, State) -> follower(info, {Status, Node, InfoList}, State0) when Status =:= nodedown orelse Status =:= nodeup -> handle_node_status_change(Node, Status, InfoList, ?FUNCTION_NAME, State0); -follower(_, tick_timeout, State0) -> - {State, Actions} = ?HANDLE_EFFECTS([{aux, tick}], cast, State0), +follower(_, tick_timeout, #state{server_state = ServerState0} = State0) -> + ServerState = ra_server:log_tick(ServerState0), + {State, Actions} = ?HANDLE_EFFECTS([{aux, tick}], cast, + State0#state{server_state = ServerState}), {keep_state, handle_tick_metrics(State), set_tick_timer(State, Actions)}; follower({call, From}, {log_fold, Fun, Term}, State) ->