diff --git a/fluxer_gateway/src/guild/guild_dispatch_push.erl b/fluxer_gateway/src/guild/guild_dispatch_push.erl index 700737321..befd95c83 100644 --- a/fluxer_gateway/src/guild/guild_dispatch_push.erl +++ b/fluxer_gateway/src/guild/guild_dispatch_push.erl @@ -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. diff --git a/fluxer_gateway/src/guild/guild_dispatch_send.erl b/fluxer_gateway/src/guild/guild_dispatch_send.erl index bf3344ebc..809aaf22a 100644 --- a/fluxer_gateway/src/guild/guild_dispatch_send.erl +++ b/fluxer_gateway/src/guild/guild_dispatch_send.erl @@ -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 diff --git a/fluxer_gateway/src/guild/guild_members_table_repair.erl b/fluxer_gateway/src/guild/guild_members_table_repair.erl index daa508360..6499b563c 100644 --- a/fluxer_gateway/src/guild/guild_members_table_repair.erl +++ b/fluxer_gateway/src/guild/guild_members_table_repair.erl @@ -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(). diff --git a/fluxer_gateway/src/push/push.erl b/fluxer_gateway/src/push/push.erl index d7508c7d1..3a7aabf01 100644 --- a/fluxer_gateway/src/push/push.erl +++ b/fluxer_gateway/src/push/push.erl @@ -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. diff --git a/fluxer_gateway/src/push/push_dispatcher.erl b/fluxer_gateway/src/push/push_dispatcher.erl index 93e9755c2..64542ac6c 100644 --- a/fluxer_gateway/src/push/push_dispatcher.erl +++ b/fluxer_gateway/src/push/push_dispatcher.erl @@ -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. diff --git a/fluxer_gateway/src/push/push_ets_cache.erl b/fluxer_gateway/src/push/push_ets_cache.erl index 9a45b4f7c..3e216ead1 100644 --- a/fluxer_gateway/src/push/push_ets_cache.erl +++ b/fluxer_gateway/src/push/push_ets_cache.erl @@ -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. diff --git a/fluxer_gateway/src/push/push_notification_format.erl b/fluxer_gateway/src/push/push_notification_format.erl index a9d2c6097..027098d6e 100644 --- a/fluxer_gateway/src/push/push_notification_format.erl +++ b/fluxer_gateway/src/push/push_notification_format.erl @@ -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(). diff --git a/fluxer_gateway/src/push/push_subscriptions.erl b/fluxer_gateway/src/push/push_subscriptions.erl index c18e168d5..873bcab9a 100644 --- a/fluxer_gateway/src/push/push_subscriptions.erl +++ b/fluxer_gateway/src/push/push_subscriptions.erl @@ -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) -> diff --git a/fluxer_gateway/src/session/session_init.erl b/fluxer_gateway/src/session/session_init.erl index cd0156745..9f2e42e06 100644 --- a/fluxer_gateway/src/session/session_init.erl +++ b/fluxer_gateway/src/session/session_init.erl @@ -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) -> diff --git a/fluxer_gateway/src/session/session_lifecycle.erl b/fluxer_gateway/src/session/session_lifecycle.erl index 54f2577dc..361af6bcd 100644 --- a/fluxer_gateway/src/session/session_lifecycle.erl +++ b/fluxer_gateway/src/session/session_lifecycle.erl @@ -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) -> diff --git a/fluxer_gateway/src/utils/custom_status_expiry.erl b/fluxer_gateway/src/utils/custom_status_expiry.erl index b0f47974a..46a866059 100644 --- a/fluxer_gateway/src/utils/custom_status_expiry.erl +++ b/fluxer_gateway/src/utils/custom_status_expiry.erl @@ -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.