feat(queue): reorganize group sm callbacks and methods
This commit is contained in:
parent
b9c5911883
commit
2096755ad6
|
@ -96,6 +96,35 @@ new(#{
|
||||||
GSM2 = ensure_state_timeout(GSM1, find_leader_timeout, ?FIND_LEADER_TIMEOUT, find_leader),
|
GSM2 = ensure_state_timeout(GSM1, find_leader_timeout, ?FIND_LEADER_TIMEOUT, find_leader),
|
||||||
GSM2.
|
GSM2.
|
||||||
|
|
||||||
|
fetch_stream_events(
|
||||||
|
#{
|
||||||
|
state := ?replaying,
|
||||||
|
topic_filter := TopicFilter,
|
||||||
|
state_data := #{stream_lease_events := Events0} = Data
|
||||||
|
} = GSM
|
||||||
|
) ->
|
||||||
|
Events1 = lists:map(
|
||||||
|
fun(Event) ->
|
||||||
|
Event#{topic_filter => TopicFilter}
|
||||||
|
end,
|
||||||
|
Events0
|
||||||
|
),
|
||||||
|
{
|
||||||
|
GSM#{
|
||||||
|
state_data => Data#{stream_lease_events => []}
|
||||||
|
},
|
||||||
|
Events1
|
||||||
|
};
|
||||||
|
fetch_stream_events(GSM) ->
|
||||||
|
{GSM, []}.
|
||||||
|
|
||||||
|
%%-----------------------------------------------------------------------
|
||||||
|
%% Event Handlers
|
||||||
|
%%-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
%%-----------------------------------------------------------------------
|
||||||
|
%% Connecting state
|
||||||
|
|
||||||
handle_leader_lease_streams(
|
handle_leader_lease_streams(
|
||||||
#{state := ?connecting, topic_filter := TopicFilter} = GSM, StreamProgresses, Version
|
#{state := ?connecting, topic_filter := TopicFilter} = GSM, StreamProgresses, Version
|
||||||
) ->
|
) ->
|
||||||
|
@ -131,6 +160,14 @@ handle_leader_lease_streams(
|
||||||
handle_leader_lease_streams(GSM, _StreamProgresses, _Version) ->
|
handle_leader_lease_streams(GSM, _StreamProgresses, _Version) ->
|
||||||
GSM.
|
GSM.
|
||||||
|
|
||||||
|
handle_find_leader_timeout(#{agent := Agent, topic_filter := TopicFilter} = GSM0) ->
|
||||||
|
ok = emqx_ds_shared_sub_registry:lookup_leader(Agent, TopicFilter),
|
||||||
|
GSM1 = ensure_state_timeout(GSM0, find_leader_timeout, ?FIND_LEADER_TIMEOUT, find_leader),
|
||||||
|
GSM1.
|
||||||
|
|
||||||
|
%%-----------------------------------------------------------------------
|
||||||
|
%% Replaying state
|
||||||
|
|
||||||
handle_leader_renew_stream_lease(
|
handle_leader_renew_stream_lease(
|
||||||
#{state := ?replaying, state_data := #{version := Version} = Data} = GSM, Version
|
#{state := ?replaying, state_data := #{version := Version} = Data} = GSM, Version
|
||||||
) ->
|
) ->
|
||||||
|
@ -140,40 +177,23 @@ handle_leader_renew_stream_lease(
|
||||||
handle_leader_renew_stream_lease(GSM, _Version) ->
|
handle_leader_renew_stream_lease(GSM, _Version) ->
|
||||||
GSM.
|
GSM.
|
||||||
|
|
||||||
|
%%-----------------------------------------------------------------------
|
||||||
|
%% Updating state
|
||||||
|
|
||||||
|
%%-----------------------------------------------------------------------
|
||||||
|
%% Internal API
|
||||||
|
%%-----------------------------------------------------------------------
|
||||||
|
|
||||||
handle_state_timeout(
|
handle_state_timeout(
|
||||||
#{agent := Agent, state := ?connecting, topic_filter := TopicFilter} = GSM0,
|
#{state := ?connecting, topic_filter := TopicFilter} = GSM,
|
||||||
find_leader_timeout,
|
find_leader_timeout,
|
||||||
find_leader
|
find_leader
|
||||||
) ->
|
) ->
|
||||||
?tp(debug, find_leader_timeout, #{topic_filter => TopicFilter}),
|
?tp(debug, find_leader_timeout, #{topic_filter => TopicFilter}),
|
||||||
ok = emqx_ds_shared_sub_registry:lookup_leader(Agent, TopicFilter),
|
handle_find_leader_timeout(GSM).
|
||||||
GSM1 = ensure_state_timeout(GSM0, find_leader_timeout, ?FIND_LEADER_TIMEOUT, find_leader),
|
|
||||||
GSM1.
|
|
||||||
|
|
||||||
fetch_stream_events(
|
|
||||||
#{
|
|
||||||
state := ?replaying,
|
|
||||||
topic_filter := TopicFilter,
|
|
||||||
state_data := #{stream_lease_events := Events0} = Data
|
|
||||||
} = GSM
|
|
||||||
) ->
|
|
||||||
Events1 = lists:map(
|
|
||||||
fun(Event) ->
|
|
||||||
Event#{topic_filter => TopicFilter}
|
|
||||||
end,
|
|
||||||
Events0
|
|
||||||
),
|
|
||||||
{
|
|
||||||
GSM#{
|
|
||||||
state_data => Data#{stream_lease_events => []}
|
|
||||||
},
|
|
||||||
Events1
|
|
||||||
};
|
|
||||||
fetch_stream_events(GSM) ->
|
|
||||||
{GSM, []}.
|
|
||||||
|
|
||||||
handle_info(
|
handle_info(
|
||||||
#{state_timers := Timers} = GSM, #state_timeout{message = Message, name = Name, id = Id} = Msg
|
#{state_timers := Timers} = GSM, #state_timeout{message = Message, name = Name, id = Id} = _Info
|
||||||
) ->
|
) ->
|
||||||
case Timers of
|
case Timers of
|
||||||
#{Name := #timer{id = Id}} ->
|
#{Name := #timer{id = Id}} ->
|
||||||
|
@ -182,7 +202,7 @@ handle_info(
|
||||||
%% Stale timer
|
%% Stale timer
|
||||||
GSM
|
GSM
|
||||||
end;
|
end;
|
||||||
handle_info(GSM, Msg) ->
|
handle_info(GSM, _Info) ->
|
||||||
GSM.
|
GSM.
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue