Skip to content

Commit b05884c

Browse files
committed
rabbit_db: Remove rabbit_db:run/1
[Why] In the Khepri ingration branch, we use a function which switches between Khepri and Mnesia. This function is specific to Khepri, in particular to support the migration from Mnesia to Khepri. It is also temporary and will go away once Mnesia code is dropped. [How] We go back to direct calls to the Mnesia-specific functions. The Mnesia-specific functions stay as they are to make the diff with the Khepri integration branch easy to read.
1 parent 2043c43 commit b05884c

File tree

15 files changed

+164
-457
lines changed

15 files changed

+164
-457
lines changed

deps/rabbit/src/rabbit_db.erl

Lines changed: 17 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
is_virgin_node/0, is_virgin_node/1,
2020
dir/0,
2121
ensure_dir_exists/0]).
22-
-export([run/1]).
2322

2423
%% Exported to be used by various rabbit_db_* modules
2524
-export([
@@ -49,8 +48,7 @@ init() ->
4948

5049
pre_init(IsVirgin),
5150

52-
Ret = run(
53-
#{mnesia => fun init_using_mnesia/0}),
51+
Ret = init_using_mnesia(),
5452
case Ret of
5553
ok ->
5654
?LOG_DEBUG(
@@ -91,9 +89,8 @@ init_using_mnesia() ->
9189
%% @doc Resets the database and the node.
9290

9391
reset() ->
94-
Ret = run(
95-
#{mnesia => fun reset_using_mnesia/0}),
96-
post_reset(Ret).
92+
ok = reset_using_mnesia(),
93+
post_reset().
9794

9895
reset_using_mnesia() ->
9996
?LOG_INFO(
@@ -106,9 +103,8 @@ reset_using_mnesia() ->
106103
%% @doc Resets the database and the node.
107104

108105
force_reset() ->
109-
Ret = run(
110-
#{mnesia => fun force_reset_using_mnesia/0}),
111-
post_reset(Ret).
106+
ok = force_reset_using_mnesia(),
107+
post_reset().
112108

113109
force_reset_using_mnesia() ->
114110
?LOG_DEBUG(
@@ -124,20 +120,17 @@ force_reset_using_mnesia() ->
124120
%% state, like if critical members are MIA.
125121

126122
force_load_on_next_boot() ->
127-
run(
128-
#{mnesia => fun force_load_on_next_boot_using_mnesia/0}).
123+
force_load_on_next_boot_using_mnesia().
129124

130125
force_load_on_next_boot_using_mnesia() ->
131126
?LOG_DEBUG(
132127
"DB: force load on next boot (using Mnesia)",
133128
#{domain => ?RMQLOG_DOMAIN_DB}),
134129
rabbit_mnesia:force_load_next_boot().
135130

136-
post_reset(ok) ->
131+
post_reset() ->
137132
rabbit_feature_flags:reset_registry(),
138-
ok;
139-
post_reset({error, _} = Error) ->
140-
Error.
133+
ok.
141134

142135
%% -------------------------------------------------------------------
143136
%% is_virgin_node().
@@ -152,8 +145,7 @@ post_reset({error, _} = Error) ->
152145
%% @see is_virgin_node/1.
153146

154147
is_virgin_node() ->
155-
run(
156-
#{mnesia => fun is_virgin_node_using_mnesia/0}).
148+
is_virgin_node_using_mnesia().
157149

158150
is_virgin_node_using_mnesia() ->
159151
rabbit_mnesia:is_virgin_node().
@@ -186,8 +178,7 @@ is_virgin_node(Node) when is_atom(Node) ->
186178
%% @returns the directory path.
187179

188180
dir() ->
189-
run(
190-
#{mnesia => fun mnesia_dir/0}).
181+
mnesia_dir().
191182

192183
mnesia_dir() ->
193184
rabbit_mnesia:dir().
@@ -207,26 +198,15 @@ ensure_dir_exists() ->
207198
end.
208199

209200
%% -------------------------------------------------------------------
210-
%% run().
201+
%% list_in_mnesia().
211202
%% -------------------------------------------------------------------
212203

213-
-spec run(Funs) -> Ret when
214-
Funs :: #{mnesia := Fun},
215-
Fun :: fun(() -> Ret),
216-
Ret :: any().
217-
%% @doc Runs the function corresponding to the used database engine.
218-
%%
219-
%% @returns the return value of `Fun'.
220-
221-
run(Funs)
222-
when is_map(Funs) andalso is_map_key(mnesia, Funs) ->
223-
#{mnesia := MnesiaFun} = Funs,
224-
run_using_mnesia(MnesiaFun).
225-
226-
run_using_mnesia(Fun) ->
227-
Fun().
204+
-spec list_in_mnesia(Table, Match) -> Objects when
205+
Table :: atom(),
206+
Match :: any(),
207+
Objects :: [any()].
228208

229209
list_in_mnesia(Table, Match) ->
230-
%% Not dirty_match_object since that would not be transactional when used in a
231-
%% tx context
210+
%% Not dirty_match_object since that would not be transactional when used
211+
%% in a tx context
232212
mnesia:async_dirty(fun () -> mnesia:match_object(Table, Match, read) end).

deps/rabbit/src/rabbit_db_binding.erl

Lines changed: 19 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@
5555
%% @private
5656

5757
exists(Binding) ->
58-
rabbit_db:run(
59-
#{mnesia => fun() -> exists_in_mnesia(Binding) end
60-
}).
58+
exists_in_mnesia(Binding).
6159

6260
exists_in_mnesia(Binding) ->
6361
binding_action_in_mnesia(
@@ -105,9 +103,7 @@ not_found_or_absent_errs_in_mnesia(Names) ->
105103
%% @private
106104

107105
create(Binding, ChecksFun) ->
108-
rabbit_db:run(
109-
#{mnesia => fun() -> create_in_mnesia(Binding, ChecksFun) end
110-
}).
106+
create_in_mnesia(Binding, ChecksFun).
111107

112108
create_in_mnesia(Binding, ChecksFun) ->
113109
binding_action_in_mnesia(
@@ -150,9 +146,7 @@ create_in_mnesia(Binding, ChecksFun) ->
150146
%% @private
151147

152148
delete(Binding, ChecksFun) ->
153-
rabbit_db:run(
154-
#{mnesia => fun() -> delete_in_mnesia(Binding, ChecksFun) end
155-
}).
149+
delete_in_mnesia(Binding, ChecksFun).
156150

157151
delete_in_mnesia(Binding, ChecksFun) ->
158152
binding_action_in_mnesia(
@@ -219,9 +213,7 @@ not_found_or_absent_in_mnesia(#resource{kind = queue} = Name) ->
219213
%% @private
220214

221215
get_all() ->
222-
rabbit_db:run(
223-
#{mnesia => fun() -> get_all_in_mnesia() end
224-
}).
216+
get_all_in_mnesia().
225217

226218
get_all_in_mnesia() ->
227219
mnesia:async_dirty(
@@ -240,9 +232,7 @@ get_all_in_mnesia() ->
240232
%% @private
241233

242234
get_all(VHost) ->
243-
rabbit_db:run(
244-
#{mnesia => fun() -> get_all_in_mnesia(VHost) end
245-
}).
235+
get_all_in_mnesia(VHost).
246236

247237
get_all_in_mnesia(VHost) ->
248238
VHostResource = rabbit_misc:r(VHost, '_'),
@@ -265,9 +255,7 @@ get_all_in_mnesia(VHost) ->
265255
%% @private
266256

267257
get_all(SrcName, DstName, Reverse) ->
268-
rabbit_db:run(
269-
#{mnesia => fun() -> get_all_in_mnesia(SrcName, DstName, Reverse) end
270-
}).
258+
get_all_in_mnesia(SrcName, DstName, Reverse).
271259

272260
get_all_in_mnesia(SrcName, DstName, Reverse) ->
273261
Route = #route{binding = #binding{source = SrcName,
@@ -290,9 +278,7 @@ get_all_in_mnesia(SrcName, DstName, Reverse) ->
290278
%% @private
291279

292280
get_all_for_source(Resource) ->
293-
rabbit_db:run(
294-
#{mnesia => fun() -> get_all_for_source_in_mnesia(Resource) end
295-
}).
281+
get_all_for_source_in_mnesia(Resource).
296282

297283
get_all_for_source_in_mnesia(Resource) ->
298284
Route = #route{binding = #binding{source = Resource, _ = '_'}},
@@ -326,9 +312,7 @@ list_for_route(Route, true) ->
326312
%% @private
327313

328314
get_all_for_destination(Dst) ->
329-
rabbit_db:run(
330-
#{mnesia => fun() -> get_all_for_destination_in_mnesia(Dst) end
331-
}).
315+
get_all_for_destination_in_mnesia(Dst).
332316

333317
get_all_for_destination_in_mnesia(Dst) ->
334318
Route = #route{binding = #binding{destination = Dst,
@@ -354,9 +338,7 @@ get_all_for_destination_in_mnesia(Dst) ->
354338
%% @private
355339

356340
fold(Fun, Acc) ->
357-
rabbit_db:run(
358-
#{mnesia => fun() -> fold_in_mnesia(Fun, Acc) end
359-
}).
341+
fold_in_mnesia(Fun, Acc).
360342

361343
fold_in_mnesia(Fun, Acc) ->
362344
ets:foldl(fun(#route{binding = Binding}, Acc0) ->
@@ -381,9 +363,7 @@ fold_in_mnesia(Fun, Acc) ->
381363
%% @private
382364

383365
match(SrcName, Match) ->
384-
rabbit_db:run(
385-
#{mnesia => fun() -> match_in_mnesia(SrcName, Match) end
386-
}).
366+
match_in_mnesia(SrcName, Match).
387367

388368
match_in_mnesia(SrcName, Match) ->
389369
MatchHead = #route{binding = #binding{source = SrcName,
@@ -411,9 +391,7 @@ match_in_mnesia(SrcName, Match) ->
411391
%% @private
412392

413393
match_routing_key(SrcName, RoutingKeys, UseIndex) ->
414-
rabbit_db:run(
415-
#{mnesia => fun() -> match_routing_key_in_mnesia(SrcName, RoutingKeys, UseIndex) end
416-
}).
394+
match_routing_key_in_mnesia(SrcName, RoutingKeys, UseIndex).
417395

418396
match_routing_key_in_mnesia(SrcName, RoutingKeys, UseIndex) ->
419397
case UseIndex of
@@ -433,9 +411,7 @@ match_routing_key_in_mnesia(SrcName, RoutingKeys, UseIndex) ->
433411
%% @private
434412

435413
recover() ->
436-
rabbit_db:run(
437-
#{mnesia => fun() -> recover_in_mnesia() end
438-
}).
414+
recover_in_mnesia().
439415

440416
recover_in_mnesia() ->
441417
rabbit_mnesia:execute_mnesia_transaction(
@@ -462,15 +438,14 @@ recover_in_mnesia() ->
462438
%% @private
463439

464440
recover(RecoverFun) ->
465-
rabbit_db:run(
466-
#{mnesia => fun() -> recover_in_mnesia(RecoverFun) end
467-
}).
441+
recover_in_mnesia(RecoverFun).
468442

469443
recover_in_mnesia(RecoverFun) ->
470-
[RecoverFun(Route, Src, Dst, fun recover_semi_durable_route/2) ||
471-
#route{binding = #binding{destination = Dst,
472-
source = Src}} = Route <-
473-
rabbit_mnesia:dirty_read_all(?MNESIA_SEMI_DURABLE_TABLE)].
444+
_ = [RecoverFun(Route, Src, Dst, fun recover_semi_durable_route/2) ||
445+
#route{binding = #binding{destination = Dst,
446+
source = Src}} = Route <-
447+
rabbit_mnesia:dirty_read_all(?MNESIA_SEMI_DURABLE_TABLE)],
448+
ok.
474449

475450
%% -------------------------------------------------------------------
476451
%% delete_all_for_exchange_in_mnesia().
@@ -578,8 +553,7 @@ has_for_source_in_mnesia(SrcName) ->
578553
%% @private
579554

580555
clear() ->
581-
rabbit_db:run(
582-
#{mnesia => fun() -> clear_in_mnesia() end}).
556+
clear_in_mnesia().
583557

584558
clear_in_mnesia() ->
585559
{atomic, ok} = mnesia:clear_table(?MNESIA_TABLE),

deps/rabbit/src/rabbit_db_cluster.erl

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,7 @@ join_using_mnesia(ClusterNodes, NodeType) when is_list(ClusterNodes) ->
111111
forget_member(Node, RemoveWhenOffline) ->
112112
case rabbit:is_running(Node) of
113113
false ->
114-
rabbit_db:run(
115-
#{mnesia => fun() ->
116-
forget_member_using_mnesia(
117-
Node, RemoveWhenOffline)
118-
end
119-
});
114+
forget_member_using_mnesia(Node, RemoveWhenOffline);
120115
true ->
121116
{error, {failed_to_remove_node, Node, rabbit_still_running}}
122117
end.
@@ -135,8 +130,7 @@ forget_member_using_mnesia(Node, RemoveWhenOffline) ->
135130
%% Node types may not all be valid with all databases.
136131

137132
change_node_type(NodeType) ->
138-
rabbit_db:run(
139-
#{mnesia => fun() -> change_node_type_using_mnesia(NodeType) end}).
133+
change_node_type_using_mnesia(NodeType).
140134

141135
change_node_type_using_mnesia(NodeType) ->
142136
rabbit_mnesia:change_cluster_node_type(NodeType).
@@ -150,8 +144,7 @@ change_node_type_using_mnesia(NodeType) ->
150144
%% @doc Indicates if this node is clustered with other nodes or not.
151145

152146
is_clustered() ->
153-
rabbit_db:run(
154-
#{mnesia => fun is_clustered_using_mnesia/0}).
147+
is_clustered_using_mnesia().
155148

156149
is_clustered_using_mnesia() ->
157150
rabbit_mnesia:is_clustered().
@@ -161,8 +154,7 @@ is_clustered_using_mnesia() ->
161154
%% @doc Returns the list of cluster members.
162155

163156
members() ->
164-
rabbit_db:run(
165-
#{mnesia => fun members_using_mnesia/0}).
157+
members_using_mnesia().
166158

167159
members_using_mnesia() ->
168160
rabbit_mnesia:members().
@@ -172,8 +164,7 @@ members_using_mnesia() ->
172164
%% @private
173165

174166
disc_members() ->
175-
rabbit_db:run(
176-
#{mnesia => fun disc_members_using_mnesia/0}).
167+
disc_members_using_mnesia().
177168

178169
disc_members_using_mnesia() ->
179170
rabbit_mnesia:cluster_nodes(disc).
@@ -185,8 +176,7 @@ disc_members_using_mnesia() ->
185176
%% Node types may not all be relevant with all databases.
186177

187178
node_type() ->
188-
rabbit_db:run(
189-
#{mnesia => fun node_type_using_mnesia/0}).
179+
node_type_using_mnesia().
190180

191181
node_type_using_mnesia() ->
192182
rabbit_mnesia:node_type().
@@ -200,9 +190,7 @@ node_type_using_mnesia() ->
200190
check_compatibility(RemoteNode) ->
201191
case rabbit_feature_flags:check_node_compatibility(RemoteNode) of
202192
ok ->
203-
rabbit_db:run(
204-
#{mnesia =>
205-
fun() -> check_compatibility_using_mnesia(RemoteNode) end});
193+
check_compatibility_using_mnesia(RemoteNode);
206194
Error ->
207195
Error
208196
end.
@@ -214,8 +202,7 @@ check_compatibility_using_mnesia(RemoteNode) ->
214202
%% @doc Ensures the cluster is consistent.
215203

216204
check_consistency() ->
217-
rabbit_db:run(
218-
#{mnesia => fun check_consistency_using_mnesia/0}).
205+
check_consistency_using_mnesia().
219206

220207
check_consistency_using_mnesia() ->
221208
rabbit_mnesia:check_cluster_consistency().
@@ -228,8 +215,7 @@ check_consistency_using_mnesia() ->
228215
%% command.
229216

230217
cli_cluster_status() ->
231-
rabbit_db:run(
232-
#{mnesia => fun cli_cluster_status_using_mnesia/0}).
218+
cli_cluster_status_using_mnesia().
233219

234220
cli_cluster_status_using_mnesia() ->
235221
rabbit_mnesia:status().

0 commit comments

Comments
 (0)