fix(gateway): satisfy dialyzer after the hotpatch reconcile (#2427)

This commit is contained in:
Hampus
2026-09-03 17:26:51 +02:00
committed by GitHub
parent f090395c21
commit 2757659989
11 changed files with 25 additions and 29 deletions
@@ -190,7 +190,9 @@ spawn_push(FinalData, GuildId, UpdatedState) ->
Data = maps:get(data, UpdatedState, #{}),
case maps:get(members_ets, Data, undefined) of
MembersTab when is_reference(MembersTab) ->
CompactState = compact_push_state(MembersTab, Data, GuildId, UpdatedState),
CompactState = compact_push_state(
eqwalizer:dynamic_cast(MembersTab), Data, GuildId, UpdatedState
),
spawn_compact_push(FinalData, GuildId, CompactState);
_ ->
missing_members_table(FinalData, GuildId, UpdatedState)
@@ -344,7 +346,7 @@ send_compact_push_notifications(MessageData, GuildId, State) ->
-spec scan_and_send_compact_push(event_data(), guild_id(), integer(), guild_state()) -> ok.
scan_and_send_compact_push(MessageData, GuildId, ChannelId, State) ->
Context = compact_scan_context(MessageData, ChannelId, State),
MembersTab = maps:get(members_ets, State),
MembersTab = eqwalizer:dynamic_cast(maps:get(members_ets, State)),
case scan_push_members(MembersTab, Context, State) of
{ok, #{eligible_user_ids := []}} ->
ok;
@@ -809,8 +811,7 @@ actively_engaged(UserId, Presences) ->
-spec lookup_presence_safe(user_id(), term()) -> map() | undefined.
lookup_presence_safe(UserId, Presences) ->
try guild_state_member:lookup_presence(Presences, UserId) of
Presence when is_map(Presence) -> Presence;
_ -> undefined
Presence -> Presence
catch
error:badarg -> undefined
end.
@@ -162,8 +162,6 @@ is_channel_visible(Channel, UserId, Member, State) ->
-spec dispatch_bulk_to_pid(
pid(), event(), event_data(), [map()], guild_id(), non_neg_integer()
) -> non_neg_integer().
dispatch_bulk_to_pid(_, _, _, [], _GuildId, Acc) ->
Acc;
dispatch_bulk_to_pid(Pid, Event, FinalData, FilteredChannels, GuildId, Acc) when is_pid(Pid) ->
EncodedData = encode_bulk_payload(FinalData, FilteredChannels),
try
@@ -59,7 +59,7 @@ repair_unhealthy(State) ->
repair_pass(State) ->
case maps:get(?REPAIR_KEY, State, undefined) of
#{tab := Tab, ticks := Ticks} when is_reference(Tab), is_integer(Ticks) ->
continue_repair(Tab, Ticks, State);
continue_repair(eqwalizer:dynamic_cast(Tab), Ticks, State);
_ ->
start_repair(maps:remove(?REPAIR_KEY, State))
end.
@@ -90,7 +90,7 @@ refuse_oversized(Size, State) ->
-spec create_staging_table(guild_state()) -> guild_state().
create_staging_table(State) ->
case new_staging_table() of
Tab when is_reference(Tab) -> continue_repair(Tab, 0, State);
Tab when is_reference(Tab) -> continue_repair(eqwalizer:dynamic_cast(Tab), 0, State);
undefined -> record_start_failure(State)
end.
@@ -221,9 +221,12 @@ collect_extra_iter(Key, Tab, MemberMap, Budget, Acc) ->
-spec release_pending_repair(guild_state()) -> guild_state().
release_pending_repair(State) ->
case maps:get(?REPAIR_KEY, State, undefined) of
undefined -> State;
#{tab := Tab} when is_reference(Tab) -> discard_staging_table(Tab, State);
_ -> maps:remove(?REPAIR_KEY, State)
undefined ->
State;
#{tab := Tab} when is_reference(Tab) ->
discard_staging_table(eqwalizer:dynamic_cast(Tab), State);
_ ->
maps:remove(?REPAIR_KEY, State)
end.
-spec discard_staging_table(ets:tid(), guild_state()) -> guild_state().
+1 -3
View File
@@ -529,10 +529,8 @@ fetch_blocked_ids_chunk(UserIds) ->
<<"user_ids">> => [integer_to_binary(UserId) || UserId <- UserIds]
},
case rpc_client:call(Request) of
{ok, Data} when is_map(Data) ->
{ok, Data} ->
cache_blocked_ids_response(UserIds, Data);
{ok, _Data} ->
fetch_blocked_ids_failed(malformed_response, length(UserIds));
{error, Reason} ->
fetch_blocked_ids_failed(Reason, length(UserIds))
end.
+1 -1
View File
@@ -375,7 +375,7 @@ counter_table_status() ->
-spec queue_backlog_lost(term(), non_neg_integer()) -> counter_value().
queue_backlog_lost(Enqueued, Queued) when is_integer(Enqueued) ->
max(0, Enqueued - dequeued_total() - Queued);
max(0, trunc(Enqueued - dequeued_total() - Queued));
queue_backlog_lost(_Enqueued, _Queued) ->
unavailable.
+1 -2
View File
@@ -287,8 +287,7 @@ expire_blocked_ids() ->
Now = erlang:system_time(second),
MatchSpec = [{{'_', '_', '$1'}, [{is_integer, '$1'}, {'=<', '$1', Now}], [true]}],
try ets:select_delete(?BLOCKED_IDS, MatchSpec) of
Deleted when is_integer(Deleted) -> Deleted;
_ -> 0
Deleted -> Deleted
catch
error:badarg -> 0
end.
@@ -334,9 +334,8 @@ truncate_preview(Content) ->
valid_utf8_prefix(Content) ->
case unicode:characters_to_binary(Content, utf8, utf8) of
Valid when is_binary(Valid) -> Valid;
{incomplete, Valid, _Rest} when is_binary(Valid) -> Valid;
{error, Valid, _Rest} when is_binary(Valid) -> Valid;
_ -> <<>>
{incomplete, Valid, _Rest} -> Valid;
{error, Valid, _Rest} -> Valid
end.
-spec build_content_fallback_preview(map()) -> binary().
@@ -543,7 +543,7 @@ abandon_delivery_workers([], Stranded) ->
Stranded;
abandon_delivery_workers([{_Pid, {Ref, Left}} | Rest], Stranded) ->
_ = erlang:demonitor(Ref, [flush]),
abandon_delivery_workers(Rest, Stranded + Left).
abandon_delivery_workers(Rest, trunc(Stranded + Left)).
-spec delivery_ids(tuple()) -> {integer(), integer()}.
delivery_ids(Ctx) ->
+3 -4
View File
@@ -71,8 +71,7 @@ normalize_buffer(_) ->
-spec deque_to_list(map()) -> [term()].
deque_to_list(Buffer) ->
try limited_deque:to_list(eqwalizer:dynamic_cast(Buffer)) of
List when is_list(List) -> List;
_ -> []
List -> List
catch
error:_Reason -> [];
exit:_Reason -> []
@@ -109,14 +108,14 @@ restored_deque_bytes(Raw, Buffer) ->
replay_buffer_bytes(Buffer) ->
WordSize = erlang:system_info(wordsize),
lists:foldl(
fun(Event, Acc) -> Acc + erts_debug:flat_size(Event) * WordSize end,
fun(Event, Acc) -> trunc(Acc + erts_debug:flat_size(Event) * WordSize) end,
0,
Buffer
).
-spec replay_payload_bytes([map()]) -> non_neg_integer().
replay_payload_bytes(Buffer) ->
lists:foldl(fun(Event, Acc) -> Acc + entry_payload_bytes(Event) end, 0, Buffer).
lists:foldl(fun(Event, Acc) -> trunc(Acc + entry_payload_bytes(Event)) end, 0, Buffer).
-spec entry_payload_bytes(term()) -> non_neg_integer().
entry_payload_bytes(#{data := {pre_encoded, Payload}}) when is_binary(Payload) ->
@@ -301,7 +301,7 @@ ack_state(State, AckedSeq, NewBuffer, NewBytes) ->
-spec buffer_payload_bytes(term()) -> non_neg_integer().
buffer_payload_bytes(Buffer) when is_list(Buffer) ->
lists:foldl(fun(Entry, Acc) -> Acc + entry_payload_bytes(Entry) end, 0, Buffer);
lists:foldl(fun(Entry, Acc) -> trunc(Acc + entry_payload_bytes(Entry)) end, 0, Buffer);
buffer_payload_bytes(Buffer) ->
try limited_deque:to_list(Buffer) of
Entries -> buffer_payload_bytes(Entries)
@@ -642,7 +642,7 @@ trim_transfer_list([Dropped | Rest], Bytes, AckSeq) ->
-spec transfer_payload_bytes([term()]) -> non_neg_integer().
transfer_payload_bytes(Entries) ->
lists:foldl(fun(Entry, Acc) -> Acc + entry_payload_bytes(Entry) end, 0, Entries).
lists:foldl(fun(Entry, Acc) -> trunc(Acc + entry_payload_bytes(Entry)) end, 0, Entries).
-spec entry_payload_bytes(term()) -> non_neg_integer().
entry_payload_bytes(#{data := {pre_encoded, Payload}}) when is_binary(Payload) ->
@@ -81,8 +81,7 @@ expires_at_ms(_Value) ->
-spec parse_rfc3339(term()) -> offset().
parse_rfc3339(Chars) ->
try calendar:rfc3339_to_system_time(Chars, [{unit, millisecond}]) of
Ms when is_integer(Ms) -> {ok, Ms};
_Other -> none
Ms -> {ok, Ms}
catch
_Class:_Reason -> none
end.