Skip to content

Commit 49f390a

Browse files
SimonUngemichaelklishin
authored andcommitted
Use ets table size instead of count the elements
1 parent 659f0b6 commit 49f390a

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

deps/rabbit/src/rabbit_channel_tracking.erl

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
shutdown_tracked_items/2]).
2626

2727
-export([list/0, list_of_user/1, list_on_node/1,
28+
channel_count_on_node/1,
2829
tracked_channel_table_name_for/1,
2930
tracked_channel_per_user_table_name_for/1,
3031
ensure_tracked_tables_for_this_node/0,
@@ -185,8 +186,18 @@ list_on_node(Node) ->
185186
[]
186187
end.
187188

188-
-spec tracked_channel_table_name_for(node()) -> atom().
189+
channel_count_on_node(Node) when Node == node() ->
190+
ets:info(?TRACKED_CHANNEL_TABLE, size);
191+
channel_count_on_node(Node) ->
192+
case rabbit_misc:rpc_call(Node, ?MODULE, ?FUNCTION_NAME, [Node]) of
193+
Int when is_integer(Int) ->
194+
Int;
195+
_ ->
196+
0
197+
end.
189198

199+
200+
-spec tracked_channel_table_name_for(node()) -> atom().
190201
tracked_channel_table_name_for(Node) ->
191202
list_to_atom(rabbit_misc:format("tracked_channel_on_node_~ts", [Node])).
192203

@@ -220,8 +231,8 @@ get_tracked_channels_by_connection_pid(ConnPid) ->
220231

221232
get_tracked_channel_by_id(ChId) ->
222233
rabbit_tracking:match_tracked_items(
223-
?TRACKED_CHANNEL_TABLE,
224-
#tracked_channel{id = ChId, _ = '_'}).
234+
?TRACKED_CHANNEL_TABLE,
235+
#tracked_channel{id = ChId, _ = '_'}).
225236

226237
delete_tracked_channel_user_entry(Username) ->
227238
rabbit_tracking:delete_tracked_entry(

deps/rabbit/src/rabbit_reader.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -947,7 +947,7 @@ is_over_node_channel_limit() ->
947947
false;
948948
NodeLimit ->
949949
%% Only fetch this if a limit is set
950-
CurrNodeChannels = length(rabbit_channel_tracking:list_on_node(node())),
950+
CurrNodeChannels = rabbit_channel_tracking:channel_count_on_node(node()),
951951
case CurrNodeChannels < NodeLimit of
952952
true ->
953953
false;

deps/rabbit/test/per_node_limit_SUITE.erl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ open_channel(Conn) when is_pid(Conn) ->
168168

169169
count_channels_per_node(Config) ->
170170
NodeConfig = rabbit_ct_broker_helpers:get_node_config(Config, 0),
171-
length(rabbit_ct_broker_helpers:rpc(Config, 0,
172-
rabbit_channel_tracking,
173-
list_on_node,
174-
[?config(nodename, NodeConfig)])).
171+
rabbit_ct_broker_helpers:rpc(Config, 0,
172+
rabbit_channel_tracking,
173+
channel_count_on_node,
174+
[?config(nodename, NodeConfig)]).

0 commit comments

Comments
 (0)