summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_connection_tracking.erl52
1 files changed, 20 insertions, 32 deletions
diff --git a/src/rabbit_connection_tracking.erl b/src/rabbit_connection_tracking.erl
index 34c12f41cb..aa5eb15464 100644
--- a/src/rabbit_connection_tracking.erl
+++ b/src/rabbit_connection_tracking.erl
@@ -263,35 +263,29 @@ tracked_connection_per_vhost_table_name_for(Node) ->
register_connection(#tracked_connection{vhost = VHost, id = ConnId, node = Node} = Conn) when Node =:= node() ->
TableName = tracked_connection_table_name_for(Node),
PerVhostTableName = tracked_connection_per_vhost_table_name_for(Node),
- rabbit_misc:execute_mnesia_transaction(
- fun() ->
- %% upsert
- case mnesia:dirty_read(TableName, ConnId) of
- [] ->
- mnesia:write(TableName, Conn, write),
- mnesia:dirty_update_counter(
- PerVhostTableName, VHost, 1);
- [_Row] ->
- ok
- end,
- ok
- end).
+ %% upsert
+ case mnesia:dirty_read(TableName, ConnId) of
+ [] ->
+ mnesia:dirty_write(TableName, Conn),
+ mnesia:dirty_update_counter(
+ PerVhostTableName, VHost, 1);
+ [_Row] ->
+ ok
+ end,
+ ok.
-spec unregister_connection(rabbit_types:connection_name()) -> ok.
unregister_connection(ConnId = {Node, _Name}) when Node =:= node() ->
TableName = tracked_connection_table_name_for(Node),
PerVhostTableName = tracked_connection_per_vhost_table_name_for(Node),
- rabbit_misc:execute_mnesia_transaction(
- fun() ->
- case mnesia:dirty_read(TableName, ConnId) of
- [] -> ok;
- [Row] ->
- mnesia:dirty_update_counter(
- PerVhostTableName, Row#tracked_connection.vhost, -1),
- mnesia:delete({TableName, ConnId})
- end
- end).
+ case mnesia:dirty_read(TableName, ConnId) of
+ [] -> ok;
+ [Row] ->
+ mnesia:dirty_update_counter(
+ PerVhostTableName, Row#tracked_connection.vhost, -1),
+ mnesia:dirty_delete(TableName, ConnId)
+ end.
-spec list() -> [rabbit_types:tracked_connection()].
@@ -350,15 +344,9 @@ count_connections_in(VirtualHost) ->
lists:foldl(fun (Node, Acc) ->
Tab = tracked_connection_per_vhost_table_name_for(Node),
try
- N = case mnesia:transaction(
- fun() ->
- case mnesia:dirty_read({Tab, VirtualHost}) of
- [] -> 0;
- [Val] -> Val#tracked_connection_per_vhost.connection_count
- end
- end) of
- {atomic, Val} -> Val;
- {aborted, _Reason} -> 0
+ N = case mnesia:dirty_read(Tab, VirtualHost) of
+ [] -> 0;
+ [Val] -> Val#tracked_connection_per_vhost.connection_count
end,
Acc + N
catch _:Err ->