Skip to content

Commit 4d0ad07

Browse files
committed
Specs and bugfixes
1 parent bf7c4cc commit 4d0ad07

File tree

9 files changed

+78
-47
lines changed

9 files changed

+78
-47
lines changed

deps/rabbit/src/rabbit_binding.erl

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,6 @@ remove(Binding0, InnerFun, ActingUser) ->
155155
case
156156
rabbit_db_binding:delete(Binding, InnerFun)
157157
of
158-
ok ->
159-
ok;
160158
{error, _} = Err ->
161159
Err;
162160
Deletions ->
@@ -289,6 +287,15 @@ group_bindings_fold(Fun, Acc, [B = #binding{source = SrcName} | Bs],
289287
OnlyDurable) ->
290288
group_bindings_fold(Fun, SrcName, Acc, Bs, [B], OnlyDurable).
291289

290+
-spec group_bindings_fold(Fun, Name, Deletions, [Binding], [Binding], OnlyDurable)
291+
-> Ret when
292+
Fun :: fun((Name, [Binding], Deletions, OnlyDurable) ->
293+
Deletions),
294+
Name :: rabbit_exchange:name(),
295+
Deletions :: rabbit_binding:deletions(),
296+
Binding :: rabbit_types:binding(),
297+
OnlyDurable :: boolean(),
298+
Ret :: Deletions.
292299
group_bindings_fold(
293300
Fun, SrcName, Acc, [B = #binding{source = SrcName} | Bs], Bindings,
294301
OnlyDurable) ->
@@ -393,7 +400,7 @@ notify_bindings_deletion(Bs, ActingUser) ->
393400
|| B <- Bs],
394401
ok.
395402

396-
-spec process_deletions(deletions()) -> rabbit_misc:thunk('ok').
403+
-spec process_deletions(deletions()) -> deletions().
397404
process_deletions(Deletions) ->
398405
dict:map(fun (_XName, {X, deleted, Bindings}) ->
399406
Bs = lists:flatten(Bindings),

deps/rabbit/src/rabbit_classic_queue.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ is_recoverable(Q) when ?is_amqqueue(Q) ->
122122
%% record if it is a mirrored queue (such info is now obtained from
123123
%% the policy). Thus, we must check if the local pid is alive
124124
%% - if the record is present - in order to restart.
125-
(rabbit_amqqueue:exists(Q)
125+
(rabbit_amqqueue:exists(amqqueue:get_name(Q))
126126
orelse not rabbit_mnesia:is_process_alive(amqqueue:get_pid(Q))).
127127

128128
recover(VHost, Queues) ->

deps/rabbit/src/rabbit_db_binding.erl

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ exists_in_mnesia(Binding) ->
6161

6262
-spec create(Binding, ChecksFun) -> Ret when
6363
Binding :: rabbit_types:binding(),
64-
Src :: rabbit_types:r('exchange'),
65-
Dst :: rabbit_types:r('exchange') | rabbit_types:r('queue'),
64+
Src :: rabbit_types:binding_source(),
65+
Dst :: rabbit_types:binding_destination(),
6666
ChecksFun :: fun((Src, Dst) -> ok | {error, Reason :: any()}),
6767
Ret :: ok | {error, Reason :: any()}.
6868
%% @doc Writes a binding if it doesn't exist already and passes the validation in
@@ -83,10 +83,10 @@ create(Binding, ChecksFun) ->
8383

8484
-spec delete(Binding, ChecksFun) -> Ret when
8585
Binding :: rabbit_types:binding(),
86-
Src :: rabbit_types:r('exchange'),
87-
Dst :: rabbit_types:r('exchange') | rabbit_types:r('queue'),
86+
Src :: rabbit_types:binding_source(),
87+
Dst :: rabbit_types:binding_destination(),
8888
ChecksFun :: fun((Src, Dst) -> ok | {error, Reason :: any()}),
89-
Ret :: ok | {error, Reason :: any()}.
89+
Ret :: rabbit_binding:deletions() | {error, Reason :: any()}.
9090
%% @doc Deletes a binding record from the database if it passes the validation in
9191
%% `ChecksFun`. It also triggers the deletion of auto-delete exchanges if needed.
9292
%%
@@ -124,7 +124,7 @@ get_all_in_mnesia(VHost) ->
124124
[B || #route{binding = B} <- rabbit_db:list_in_mnesia(rabbit_route, Match)].
125125

126126
-spec get_all_for_source(Src) -> [Binding] when
127-
Src :: rabbit_types:r('exchange'),
127+
Src :: rabbit_types:binding_source(),
128128
Binding :: rabbit_types:binding().
129129
%% @doc Returns all binding records for a given exchange in the given virtual host.
130130
%%
@@ -142,7 +142,7 @@ get_all_for_source_in_mnesia(Resource) ->
142142
[B || #route{binding = B} <- rabbit_db:list_in_mnesia(rabbit_route, Route)].
143143

144144
-spec get_all_for_destination(Dst) -> [Binding] when
145-
Dst :: rabbit_types:r('exchange') | rabbit_types:r('queue'),
145+
Dst :: rabbit_types:binding_destination(),
146146
Binding :: rabbit_types:binding().
147147
%% @doc Returns all binding records for a given exchange or queue destination
148148
%% in the given virtual host.
@@ -163,8 +163,8 @@ get_all_for_destination_in_mnesia(Resource) ->
163163
#reverse_route{reverse_binding = B} <- rabbit_db:list_in_mnesia(rabbit_reverse_route, Route)].
164164

165165
-spec get_all(Src, Dst) -> [Binding] when
166-
Src :: rabbit_types:r('exchange'),
167-
Dst :: rabbit_types:r('exchange') | rabbit_types:r('queue'),
166+
Src :: rabbit_types:binding_source(),
167+
Dst :: rabbit_types:binding_destination(),
168168
Binding :: rabbit_types:binding().
169169
%% @doc Returns all binding records for a given source and destination
170170
%% in the given virtual host.
@@ -397,6 +397,11 @@ delete_in_mnesia(Binding, ChecksFun) ->
397397
end
398398
end, fun absent_errs_only_in_mnesia/1).
399399

400+
-spec delete_in_mnesia(Src, Dst, Binding) -> Ret when
401+
Src :: rabbit_types:exchange() | amqqueue:amqqueue(),
402+
Dst :: rabbit_types:exchange() | amqqueue:amqqueue(),
403+
Binding :: rabbit_types:binding(),
404+
Ret :: fun(() -> rabbit_binding:deletions()).
400405
delete_in_mnesia(Src, Dst, B) ->
401406
ok = sync_route(#route{binding = B}, rabbit_binding:binding_type(Src, Dst),
402407
should_index_table(Src), fun delete/3),
@@ -596,6 +601,13 @@ sync_index_route(Route, true, Fun) ->
596601
sync_index_route(_, _, _) ->
597602
ok.
598603

604+
-spec maybe_auto_delete_exchange_in_mnesia(ExchangeName, [Binding], Deletions, OnlyDurable)
605+
-> Ret when
606+
ExchangeName :: rabbit_exchange:name(),
607+
Binding :: rabbit_types:binding(),
608+
Deletions :: rabbit_binding:deletions(),
609+
OnlyDurable :: boolean(),
610+
Ret :: rabbit_binding:deletions().
599611
maybe_auto_delete_exchange_in_mnesia(XName, Bindings, Deletions, OnlyDurable) ->
600612
{Entry, Deletions1} =
601613
case rabbit_db_exchange:maybe_auto_delete_in_mnesia(XName, OnlyDurable) of

deps/rabbit/src/rabbit_db_exchange.erl

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@
4444
-define(MNESIA_DURABLE_TABLE, rabbit_durable_exchange).
4545
-define(MNESIA_SERIAL_TABLE, rabbit_exchange_serial).
4646

47-
-type name() :: rabbit_types:r('exchange').
48-
4947
%% -------------------------------------------------------------------
5048
%% get_all().
5149
%% -------------------------------------------------------------------
@@ -107,8 +105,8 @@ get_all_durable_in_mnesia() ->
107105
%% list().
108106
%% -------------------------------------------------------------------
109107

110-
-spec list() -> [Exchange] when
111-
Exchange :: rabbit_types:exchange().
108+
-spec list() -> [ExchangeName] when
109+
ExchangeName :: rabbit_exchange:name().
112110
%% @doc Lists the names of all exchanges.
113111
%%
114112
%% @returns a list of exchange names.
@@ -128,7 +126,7 @@ list_in_mnesia() ->
128126
%% -------------------------------------------------------------------
129127

130128
-spec get(ExchangeName) -> Ret when
131-
ExchangeName :: name(),
129+
ExchangeName :: rabbit_exchange:name(),
132130
Ret :: {ok, Exchange :: rabbit_types:exchange()} | {error, not_found}.
133131
%% @doc Returns the record of the exchange named `Name'.
134132
%%
@@ -150,7 +148,7 @@ get_in_mnesia(Name) ->
150148
%% -------------------------------------------------------------------
151149

152150
-spec get_many([ExchangeName]) -> [Exchange] when
153-
ExchangeName :: name(),
151+
ExchangeName :: rabbit_exchange:name(),
154152
Exchange :: rabbit_types:exchange().
155153
%% @doc Returns the records of the exchanges named `Name'.
156154
%%
@@ -192,7 +190,7 @@ count_in_mnesia() ->
192190
%% -------------------------------------------------------------------
193191

194192
-spec update(ExchangeName, UpdateFun) -> ok when
195-
ExchangeName :: name(),
193+
ExchangeName :: rabbit_exchange:name(),
196194
UpdateFun :: fun((Exchange) -> Exchange).
197195
%% @doc Updates an existing exchange record using the result of
198196
%% `UpdateFun'.
@@ -214,6 +212,12 @@ update_in_mnesia(XName, Fun) ->
214212
ok
215213
end).
216214

215+
-spec update_in_mnesia_tx(ExchangeName, UpdateFun) -> Ret when
216+
ExchangeName :: rabbit_exchange:name(),
217+
Exchange :: rabbit_types:exchange(),
218+
UpdateFun :: fun((Exchange) -> Exchange),
219+
Ret :: not_found | Exchange.
220+
217221
update_in_mnesia_tx(Name, Fun) ->
218222
Table = {?MNESIA_TABLE, Name},
219223
case mnesia:wread(Table) of
@@ -294,7 +298,7 @@ set_in_mnesia(Xs) when is_list(Xs) ->
294298
%% -------------------------------------------------------------------
295299

296300
-spec peek_serial(ExchangeName) -> Serial when
297-
ExchangeName :: name(),
301+
ExchangeName :: rabbit_exchange:name(),
298302
Serial :: integer().
299303
%% @doc Returns the next serial number without increasing it.
300304
%%
@@ -324,7 +328,7 @@ peek_serial_in_mnesia_tx(XName, LockType) ->
324328
%% -------------------------------------------------------------------
325329

326330
-spec next_serial(ExchangeName) -> Serial when
327-
ExchangeName :: name(),
331+
ExchangeName :: rabbit_exchange:name(),
328332
Serial :: integer().
329333
%% @doc Returns the next serial number and increases it.
330334
%%
@@ -342,6 +346,10 @@ next_serial_in_mnesia(XName) ->
342346
next_serial_in_mnesia_tx(XName)
343347
end).
344348

349+
-spec next_serial_in_mnesia_tx(ExchangeName) -> Serial when
350+
ExchangeName :: rabbit_exchange:name(),
351+
Serial :: integer().
352+
345353
next_serial_in_mnesia_tx(XName) ->
346354
Serial = peek_serial_in_mnesia_tx(XName, write),
347355
ok = mnesia:write(?MNESIA_SERIAL_TABLE,
@@ -353,7 +361,7 @@ next_serial_in_mnesia_tx(XName) ->
353361
%% -------------------------------------------------------------------
354362

355363
-spec delete(ExchangeName, IfUnused) -> Ret when
356-
ExchangeName :: name(),
364+
ExchangeName :: rabbit_exchange:name(),
357365
IfUnused :: boolean(),
358366
Exchange :: rabbit_types:exchange(),
359367
Binding :: rabbit_types:binding(),
@@ -398,6 +406,14 @@ conditional_delete_in_mnesia(X = #exchange{name = XName}, OnlyDurable) ->
398406
unconditional_delete_in_mnesia(X, OnlyDurable) ->
399407
delete_in_mnesia(X, OnlyDurable, true).
400408

409+
-spec delete_in_mnesia(Exchange, OnlyDurable, RemoveBindingsForSource) -> Ret when
410+
Exchange :: rabbit_types:exchange(),
411+
OnlyDurable :: boolean(),
412+
RemoveBindingsForSource :: boolean(),
413+
Exchange :: rabbit_types:exchange(),
414+
Binding :: rabbit_types:binding(),
415+
Deletions :: dict:dict(),
416+
Ret :: {error, not_found} | {error, in_use} | {deleted, Exchange, [Binding], Deletions}.
401417
delete_in_mnesia(X = #exchange{name = XName}, OnlyDurable, RemoveBindingsForSource) ->
402418
ok = mnesia:delete({?MNESIA_TABLE, XName}),
403419
mnesia:delete({?MNESIA_DURABLE_TABLE, XName}),
@@ -409,7 +425,7 @@ delete_in_mnesia(X = #exchange{name = XName}, OnlyDurable, RemoveBindingsForSour
409425
%% -------------------------------------------------------------------
410426

411427
-spec delete_serial(ExchangeName) -> ok when
412-
ExchangeName :: name().
428+
ExchangeName :: rabbit_exchange:name().
413429
%% @doc Deletes an exchange serial record from the database.
414430
%%
415431
%% @returns ok
@@ -494,7 +510,7 @@ match_in_mnesia(Pattern) ->
494510
%% -------------------------------------------------------------------
495511

496512
-spec exists(ExchangeName) -> Exists when
497-
ExchangeName :: name(),
513+
ExchangeName :: rabbit_exchange:name(),
498514
Exists :: boolean().
499515
%% @doc Indicates if the exchange named `Name' exists.
500516
%%
@@ -532,9 +548,12 @@ clear_in_mnesia() ->
532548
%% maybe_auto_delete_in_mnesia().
533549
%% -------------------------------------------------------------------
534550

535-
-spec maybe_auto_delete_in_mnesia
536-
(rabbit_types:exchange(), boolean())
537-
-> 'not_deleted' | {'deleted', rabbit_binding:deletions()}.
551+
-spec maybe_auto_delete_in_mnesia(ExchangeName, boolean()) -> Ret when
552+
ExchangeName :: rabbit_exchange:name(),
553+
Exchange :: rabbit_types:exchange(),
554+
Deletions :: rabbit_binding:deletions(),
555+
Ret :: {'not_deleted', 'undefined' | Exchange} |
556+
{'deleted', Exchange, Deletions}.
538557
maybe_auto_delete_in_mnesia(XName, OnlyDurable) ->
539558
case mnesia:read({case OnlyDurable of
540559
true -> ?MNESIA_DURABLE_TABLE;

deps/rabbit/src/rabbit_db_queue.erl

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ get_many_durable(Names) when is_list(Names) ->
374374

375375
-spec update(QName, UpdateFun) -> Ret when
376376
QName :: rabbit_amqqueue:name(),
377-
Queue :: amqqueue:amqeueue(),
377+
Queue :: amqqueue:amqqueue(),
378378
UpdateFun :: fun((Queue) -> Queue),
379379
Ret :: Queue | not_found.
380380
%% @doc Updates an existing queue record using `UpdateFun'.
@@ -611,11 +611,7 @@ delete_transient_in_mnesia(FilterFun) ->
611611
]))
612612
end),
613613
lists:unzip(lists:flatten(
614-
[case delete_many_transient_in_mnesia(Queues) of
615-
{error, noproc} -> [];
616-
{error, {timeout, _}} -> [];
617-
Value -> Value
618-
end || Queues <- partition_queues(Qs)]
614+
[delete_many_transient_in_mnesia(Queues) || Queues <- partition_queues(Qs)]
619615
)).
620616

621617
-spec delete_many_transient_in_mnesia([QName]) -> Ret when
@@ -725,7 +721,7 @@ set_dirty_in_mnesia(Q) ->
725721

726722
-spec update_in_mnesia_tx(QName, UpdateFun) -> Ret when
727723
QName :: rabbit_amqqueue:name(),
728-
Queue :: amqqueue:amqeueue(),
724+
Queue :: amqqueue:amqqueue(),
729725
UpdateFun :: fun((Queue) -> Queue),
730726
Ret :: Queue | not_found.
731727

deps/rabbit/src/rabbit_db_topic_exchange.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ set(#binding{source = XName, key = RoutingKey, destination = Destination, args =
3838
%% -------------------------------------------------------------------
3939

4040
-spec delete_all_for_exchange(ExchangeName) -> ok when
41-
ExchangeName :: rabbit_types:r('exchange').
41+
ExchangeName :: rabbit_exchange:name().
4242
%% @doc Deletes all topic bindings for the exchange named `ExchangeName'
4343
%%
4444
%% @private
@@ -68,7 +68,7 @@ delete(Bs) when is_list(Bs) ->
6868
%% -------------------------------------------------------------------
6969

7070
-spec match(ExchangeName, RoutingKey) -> ok when
71-
ExchangeName :: rabbit_types:r('exchange'),
71+
ExchangeName :: rabbit_exchange:name(),
7272
RoutingKey :: binary().
7373
%% @doc Finds the topic binding matching the given exchange and routing key and returns
7474
%% the destination of the binding

deps/rabbit/src/rabbit_db_user.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ clear_matching_user_permissions_in_mnesia_tx(Username, VHostName) ->
358358
%% -------------------------------------------------------------------
359359

360360
-spec get_topic_permissions(Username, VHostName, ExchangeName) -> Ret when
361-
Username :: internal_topic:topicname(),
361+
Username :: internal_user:username(),
362362
VHostName :: vhost:name(),
363363
ExchangeName :: binary(),
364364
Ret :: TopicPermission | undefined,
@@ -546,7 +546,7 @@ clear_topic_permissions_in_mnesia_tx(Username, VHostName, ExchangeName) ->
546546

547547
-spec clear_matching_topic_permissions(Username, VHostName, ExchangeName) ->
548548
Ret when
549-
Username :: internal_topic:topicname() | '_',
549+
Username :: internal_user:username() | '_',
550550
VHostName :: vhost:name() | '_',
551551
ExchangeName :: binary() | '_',
552552
Ret :: [#topic_permission{}].

deps/rabbit/src/rabbit_exchange.erl

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ serialise_events(X = #exchange{type = Type, decorators = Decorators}) ->
7979
rabbit_exchange_decorator:select(all, Decorators))
8080
orelse (type_to_module(Type)):serialise_events().
8181

82-
-spec serial(rabbit_types:exchange()) ->
83-
fun((boolean()) -> 'none' | pos_integer()).
82+
-spec serial(rabbit_types:exchange()) -> 'none' | pos_integer().
8483

8584
serial(X) ->
8685
case serialise_events(X) of
@@ -271,8 +270,8 @@ update_scratch_fun(App, Fun, Decorators) ->
271270
decorators = Decorators}
272271
end.
273272

274-
-spec update_decorators(name(), [atom()] | none | undefined) -> 'ok'.
275-
273+
-spec update_decorators(name(), {[Decorator], [Decorator]}) -> 'ok' when
274+
Decorator :: atom().
276275
update_decorators(Name, Decorators) ->
277276
Fun = fun(X) -> X#exchange{decorators = Decorators} end,
278277
ok = rabbit_db_exchange:update(Name, Fun).
@@ -443,9 +442,7 @@ process_deletions({error, _} = E) ->
443442
process_deletions({deleted, #exchange{name = XName} = X, Bs, Deletions}) ->
444443
rabbit_binding:process_deletions(
445444
rabbit_binding:add_deletion(
446-
XName, {X, deleted, Bs}, Deletions));
447-
process_deletions(Deletions) ->
448-
rabbit_binding:process_deletions(Deletions).
445+
XName, {X, deleted, Bs}, Deletions)).
449446

450447
-spec validate_binding
451448
(rabbit_types:exchange(), rabbit_types:binding())

deps/rabbitmq_consistent_hash_exchange/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ xref(
4343
plt(
4444
name = "base_plt",
4545
libs = ["//deps/rabbitmq_cli:elixir"],
46-
deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS + RUNTIME_DEPS,
46+
deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS,
4747
)
4848

4949
dialyze(

0 commit comments

Comments
 (0)