fix(gateway): drop the channel engine on an empty range list (#2278)

This commit is contained in:
Hampus
2026-08-31 22:17:19 +02:00
committed by GitHub
parent 7ce3d71c44
commit 55d85db401
2 changed files with 13 additions and 1 deletions
@@ -179,7 +179,7 @@ maybe_ensure_store(ListId, SubsTab, State) ->
ensure_channel_engine_for_subs(ListId, SubsTab, State) ->
case map_size(guild_member_list_subs:get_list_subs(ListId, SubsTab)) > 0 of
true -> guild_member_list_channel_engine:ensure(ListId, State);
false -> State
false -> guild_member_list_channel_engine:drop(ListId, State)
end.
-spec compute_ranges_to_sync([range()], [range()], boolean()) -> [range()].
@@ -96,6 +96,18 @@ unsubscribe_last_session_drops_channel_store_test() ->
?assertNot(maps:is_key(<<"500">>, Engines)),
?assertEqual(undefined, ets:info(Ref, name)).
empty_ranges_subscribe_drops_channel_engine_test() ->
Ref = guild_member_list_engine:new(),
State = (base_state(make_subs_tab([{<<"500">>, <<"s1">>, [{0, 99}]}])))#{
channel_member_list_engines => #{<<"500">> => Ref}
},
{NewState, _ShouldSync, _Ranges} = guild_member_list:subscribe_ranges(
<<"s1">>, <<"500">>, [], State
),
Engines = maps:get(channel_member_list_engines, NewState, #{}),
?assertNot(maps:is_key(<<"500">>, Engines)),
?assertEqual(undefined, ets:info(Ref, name)).
broadcast_channel_list_dispatches_sync_immediately_test() ->
with_sync_dispatch_mock(fun run_broadcast_channel_list_dispatches_sync_immediately/0).