Skip to content

Commit 5cd8e41

Browse files
committed
Remove compatibility for flag tracking_records_in_ets
1 parent d0dc951 commit 5cd8e41

File tree

6 files changed

+54
-566
lines changed

6 files changed

+54
-566
lines changed

deps/rabbit/src/rabbit_channel_tracking.erl

Lines changed: 16 additions & 198 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,6 @@
3434

3535
-export([count_local_tracked_items_of_user/1]).
3636

37-
-ifdef(TEST).
38-
-export([get_all_tracked_channel_table_names_for_node/1]).
39-
-endif.
40-
4137
-include_lib("rabbit_common/include/rabbit.hrl").
4238

4339
-import(rabbit_misc, [pget/2]).
@@ -53,8 +49,6 @@
5349
-spec boot() -> ok.
5450

5551
boot() ->
56-
ensure_tracked_channels_table_for_this_node(),
57-
ensure_per_user_tracked_channels_table_for_node(),
5852
clear_tracking_tables(),
5953
ok.
6054

@@ -116,27 +110,14 @@ handle_cast({user_deleted, Details}) ->
116110
_ = timer:apply_after(?TRACKING_EXECUTION_TIMEOUT, ?MODULE,
117111
delete_tracked_channel_user_entry, [Username]),
118112
ok;
119-
handle_cast({node_deleted, Details}) ->
120-
case rabbit_feature_flags:is_enabled(tracking_records_in_ets) of
121-
true ->
122-
ok;
123-
false ->
124-
Node = pget(node, Details),
125-
rabbit_log_channel:info(
126-
"Node '~ts' was removed from the cluster, deleting"
127-
" its channel tracking tables...", [Node]),
128-
delete_tracked_channels_table_for_node(Node),
129-
delete_per_user_tracked_channels_table_for_node(Node)
130-
end.
113+
handle_cast({node_deleted, _Details}) ->
114+
ok.
131115

132116
-spec register_tracked(rabbit_types:tracked_channel()) -> ok.
133117
-dialyzer([{nowarn_function, [register_tracked/1]}]).
134118

135119
register_tracked(TrackedCh = #tracked_channel{node = Node}) when Node == node() ->
136-
case rabbit_feature_flags:is_enabled(tracking_records_in_ets) of
137-
true -> register_tracked_ets(TrackedCh);
138-
false -> register_tracked_mnesia(TrackedCh)
139-
end.
120+
register_tracked_ets(TrackedCh).
140121

141122
register_tracked_ets(TrackedCh = #tracked_channel{pid = ChPid, username = Username}) ->
142123
case ets:lookup(?TRACKED_CHANNEL_TABLE, ChPid) of
@@ -149,27 +130,9 @@ register_tracked_ets(TrackedCh = #tracked_channel{pid = ChPid, username = Userna
149130
end,
150131
ok.
151132

152-
register_tracked_mnesia(TrackedCh =
153-
#tracked_channel{node = Node, name = Name, username = Username}) ->
154-
ChId = rabbit_tracking:id(Node, Name),
155-
TableName = tracked_channel_table_name_for(Node),
156-
PerUserChTableName = tracked_channel_per_user_table_name_for(Node),
157-
case mnesia:dirty_read(TableName, ChId) of
158-
[] ->
159-
mnesia:dirty_write(TableName, TrackedCh),
160-
mnesia:dirty_update_counter(PerUserChTableName, Username, 1),
161-
ok;
162-
[#tracked_channel{}] ->
163-
ok
164-
end,
165-
ok.
166-
167133
-spec unregister_tracked_by_pid(pid()) -> any().
168134
unregister_tracked_by_pid(ChPid) when node(ChPid) == node() ->
169-
case rabbit_feature_flags:is_enabled(tracking_records_in_ets) of
170-
true -> unregister_tracked_by_pid_ets(ChPid);
171-
false -> unregister_tracked_by_pid_mnesia(ChPid)
172-
end.
135+
unregister_tracked_by_pid_ets(ChPid).
173136

174137
unregister_tracked_by_pid_ets(ChPid) ->
175138
case ets:lookup(?TRACKED_CHANNEL_TABLE, ChPid) of
@@ -179,27 +142,13 @@ unregister_tracked_by_pid_ets(ChPid) ->
179142
ets:delete(?TRACKED_CHANNEL_TABLE, ChPid)
180143
end.
181144

182-
unregister_tracked_by_pid_mnesia(ChPid) ->
183-
case get_tracked_channel_by_pid_mnesia(ChPid) of
184-
[] -> ok;
185-
[#tracked_channel{id = ChId, node = Node, username = Username}] ->
186-
TableName = tracked_channel_table_name_for(Node),
187-
PerUserChannelTableName = tracked_channel_per_user_table_name_for(Node),
188-
189-
mnesia:dirty_update_counter(PerUserChannelTableName, Username, -1),
190-
mnesia:dirty_delete(TableName, ChId)
191-
end.
192-
193145
%% @doc This function is exported and implements a rabbit_tracking
194146
%% callback, however it is not used in rabbitmq-server any more. It is
195147
%% only kept for backwards compatibility if 3rd-party code would rely
196148
%% on it.
197149
-spec unregister_tracked(rabbit_types:tracked_channel_id()) -> ok.
198150
unregister_tracked(ChId = {Node, _Name}) when Node == node() ->
199-
case rabbit_feature_flags:is_enabled(tracking_records_in_ets) of
200-
true -> unregister_tracked_ets(ChId);
201-
false -> unregister_tracked_mnesia(ChId)
202-
end.
151+
unregister_tracked_ets(ChId).
203152

204153
unregister_tracked_ets(ChId) ->
205154
case get_tracked_channel_by_id_ets(ChId) of
@@ -209,23 +158,10 @@ unregister_tracked_ets(ChId) ->
209158
ets:delete(?TRACKED_CHANNEL_TABLE, ChPid)
210159
end.
211160

212-
unregister_tracked_mnesia(ChId = {Node, _Name}) when Node =:= node() ->
213-
TableName = tracked_channel_table_name_for(Node),
214-
PerUserChannelTableName = tracked_channel_per_user_table_name_for(Node),
215-
case mnesia:dirty_read(TableName, ChId) of
216-
[] -> ok;
217-
[#tracked_channel{username = Username}] ->
218-
mnesia:dirty_update_counter(PerUserChannelTableName, Username, -1),
219-
mnesia:dirty_delete(TableName, ChId)
220-
end.
221-
222161
-spec count_tracked_items_in({atom(), rabbit_types:username()}) -> non_neg_integer().
223162

224163
count_tracked_items_in(Type) ->
225-
case rabbit_feature_flags:is_enabled(tracking_records_in_ets) of
226-
true -> count_tracked_items_in_ets(Type);
227-
false -> count_tracked_items_in_mnesia(Type)
228-
end.
164+
count_tracked_items_in_ets(Type).
229165

230166
count_tracked_items_in_ets({user, Username}) ->
231167
rabbit_tracking:count_on_all_nodes(
@@ -236,19 +172,10 @@ count_tracked_items_in_ets({user, Username}) ->
236172
count_local_tracked_items_of_user(Username) ->
237173
rabbit_tracking:read_ets_counter(?TRACKED_CHANNEL_TABLE_PER_USER, Username).
238174

239-
count_tracked_items_in_mnesia({user, Username}) ->
240-
rabbit_tracking:count_tracked_items_mnesia(
241-
fun tracked_channel_per_user_table_name_for/1,
242-
#tracked_channel_per_user.channel_count, Username,
243-
"channels of user").
244-
245175
-spec clear_tracking_tables() -> ok.
246176

247177
clear_tracking_tables() ->
248-
case rabbit_feature_flags:is_enabled(tracking_records_in_ets) of
249-
true -> ok;
250-
false -> clear_tracked_channel_tables_for_this_node()
251-
end.
178+
ok.
252179

253180
-spec shutdown_tracked_items(list(), term()) -> ok.
254181

@@ -267,53 +194,27 @@ list() ->
267194
-spec list_of_user(rabbit_types:username()) -> [rabbit_types:tracked_channel()].
268195

269196
list_of_user(Username) ->
270-
case rabbit_feature_flags:is_enabled(tracking_records_in_ets) of
271-
true -> list_of_user_ets(Username);
272-
false -> list_of_user_mnesia(Username)
273-
end.
197+
list_of_user_ets(Username).
274198

275199
list_of_user_ets(Username) ->
276200
rabbit_tracking:match_tracked_items_ets(
277201
?TRACKED_CHANNEL_TABLE,
278202
#tracked_channel{username = Username, _ = '_'}).
279203

280-
list_of_user_mnesia(Username) ->
281-
rabbit_tracking:match_tracked_items_mnesia(
282-
fun tracked_channel_table_name_for/1,
283-
#tracked_channel{username = Username, _ = '_'}).
284-
285204
-spec list_on_node(node()) -> [rabbit_types:tracked_channel()].
205+
list_on_node(Node) when Node == node() ->
206+
list_on_node_ets();
286207
list_on_node(Node) ->
287-
case rabbit_feature_flags:is_enabled(tracking_records_in_ets) of
288-
true when Node == node() ->
289-
list_on_node_ets();
290-
true ->
291-
case rabbit_misc:rpc_call(Node, ?MODULE, list_on_node, [Node]) of
292-
List when is_list(List) ->
293-
List;
294-
_ ->
295-
[]
296-
end;
297-
false ->
298-
list_on_node_mnesia(Node)
208+
case rabbit_misc:rpc_call(Node, ?MODULE, list_on_node, [Node]) of
209+
List when is_list(List) ->
210+
List;
211+
_ ->
212+
[]
299213
end.
300214

301215
list_on_node_ets() ->
302216
ets:tab2list(?TRACKED_CHANNEL_TABLE).
303217

304-
list_on_node_mnesia(Node) ->
305-
try mnesia:dirty_match_object(
306-
tracked_channel_table_name_for(Node),
307-
#tracked_channel{_ = '_'})
308-
catch exit:{aborted, {no_exists, _}} ->
309-
%% The table might not exist yet (or is already gone)
310-
%% between the time rabbit_nodes:list_running() runs and
311-
%% returns a specific node, and
312-
%% mnesia:dirty_match_object() is called for that node's
313-
%% table.
314-
[]
315-
end.
316-
317218
-spec tracked_channel_table_name_for(node()) -> atom().
318219

319220
tracked_channel_table_name_for(Node) ->
@@ -330,114 +231,31 @@ ensure_tracked_tables_for_this_node() ->
330231
_ = ensure_per_user_tracked_channels_table_for_this_node_ets(),
331232
ok.
332233

333-
%% internal
334-
ensure_tracked_channels_table_for_this_node() ->
335-
case rabbit_feature_flags:is_enabled(tracking_records_in_ets) of
336-
true ->
337-
ok;
338-
false ->
339-
ensure_tracked_channels_table_for_this_node_mnesia()
340-
end.
341-
342-
ensure_per_user_tracked_channels_table_for_node() ->
343-
case rabbit_feature_flags:is_enabled(tracking_records_in_ets) of
344-
true ->
345-
ok;
346-
false ->
347-
ensure_per_user_tracked_channels_table_for_this_node_mnesia()
348-
end.
349-
350234
%% Create tables
351235
ensure_tracked_channels_table_for_this_node_ets() ->
352236
rabbit_log:info("Setting up a table for channel tracking on this node: ~tp",
353237
[?TRACKED_CHANNEL_TABLE]),
354238
ets:new(?TRACKED_CHANNEL_TABLE, [named_table, public, {write_concurrency, true},
355239
{keypos, #tracked_channel.pid}]).
356240

357-
ensure_tracked_channels_table_for_this_node_mnesia() ->
358-
Node = node(),
359-
TableName = tracked_channel_table_name_for(Node),
360-
case mnesia:create_table(TableName, [{record_name, tracked_channel},
361-
{attributes, record_info(fields, tracked_channel)}]) of
362-
{atomic, ok} ->
363-
rabbit_log:info("Setting up a table for channel tracking on this node: ~tp",
364-
[TableName]),
365-
ok;
366-
{aborted, {already_exists, _}} ->
367-
rabbit_log:info("Setting up a table for channel tracking on this node: ~tp",
368-
[TableName]),
369-
ok;
370-
{aborted, Error} ->
371-
rabbit_log:error("Failed to create a tracked channel table for node ~tp: ~tp", [Node, Error]),
372-
ok
373-
end.
374-
375241
ensure_per_user_tracked_channels_table_for_this_node_ets() ->
376242
rabbit_log:info("Setting up a table for channel tracking on this node: ~tp",
377243
[?TRACKED_CHANNEL_TABLE_PER_USER]),
378244
ets:new(?TRACKED_CHANNEL_TABLE_PER_USER, [named_table, public, {write_concurrency, true}]).
379245

380-
ensure_per_user_tracked_channels_table_for_this_node_mnesia() ->
381-
Node = node(),
382-
TableName = tracked_channel_per_user_table_name_for(Node),
383-
case mnesia:create_table(TableName, [{record_name, tracked_channel_per_user},
384-
{attributes, record_info(fields, tracked_channel_per_user)}]) of
385-
{atomic, ok} ->
386-
rabbit_log:info("Setting up a table for channel tracking on this node: ~tp",
387-
[TableName]),
388-
ok;
389-
{aborted, {already_exists, _}} ->
390-
rabbit_log:info("Setting up a table for channel tracking on this node: ~tp",
391-
[TableName]),
392-
ok;
393-
{aborted, Error} ->
394-
rabbit_log:error("Failed to create a per-user tracked channel table for node ~tp: ~tp", [Node, Error]),
395-
ok
396-
end.
397-
398-
clear_tracked_channel_tables_for_this_node() ->
399-
[rabbit_tracking:clear_tracking_table(T)
400-
|| T <- get_all_tracked_channel_table_names_for_node(node())].
401-
402-
delete_tracked_channels_table_for_node(Node) ->
403-
TableName = tracked_channel_table_name_for(Node),
404-
rabbit_tracking:delete_tracking_table(TableName, Node, "tracked channel").
405-
406-
delete_per_user_tracked_channels_table_for_node(Node) ->
407-
TableName = tracked_channel_per_user_table_name_for(Node),
408-
rabbit_tracking:delete_tracking_table(TableName, Node,
409-
"per-user tracked channels").
410-
411-
get_all_tracked_channel_table_names_for_node(Node) ->
412-
[tracked_channel_table_name_for(Node),
413-
tracked_channel_per_user_table_name_for(Node)].
414-
415246
get_tracked_channels_by_connection_pid(ConnPid) ->
416-
case rabbit_feature_flags:is_enabled(tracking_records_in_ets) of
417-
true -> get_tracked_channels_by_connection_pid_ets(ConnPid);
418-
false -> get_tracked_channels_by_connection_pid_mnesia(ConnPid)
419-
end.
247+
get_tracked_channels_by_connection_pid_ets(ConnPid).
420248

421249
get_tracked_channels_by_connection_pid_ets(ConnPid) ->
422250
rabbit_tracking:match_tracked_items_local(
423251
?TRACKED_CHANNEL_TABLE,
424252
#tracked_channel{connection = ConnPid, _ = '_'}).
425253

426-
get_tracked_channels_by_connection_pid_mnesia(ConnPid) ->
427-
rabbit_tracking:match_tracked_items_mnesia(
428-
fun tracked_channel_table_name_for/1,
429-
#tracked_channel{connection = ConnPid, _ = '_'}).
430-
431254
get_tracked_channel_by_id_ets(ChId) ->
432255
rabbit_tracking:match_tracked_items_ets(
433256
?TRACKED_CHANNEL_TABLE,
434257
#tracked_channel{id = ChId, _ = '_'}).
435258

436-
get_tracked_channel_by_pid_mnesia(ChPid) ->
437-
rabbit_tracking:match_tracked_items_mnesia(
438-
fun tracked_channel_table_name_for/1,
439-
#tracked_channel{pid = ChPid, _ = '_'}).
440-
441259
delete_tracked_channel_user_entry(Username) ->
442260
rabbit_tracking:delete_tracked_entry(
443261
{rabbit_auth_backend_internal, exists, [Username]},

0 commit comments

Comments
 (0)