Skip to content

Commit 0923c96

Browse files
Merge pull request #861 from rabbitmq/rabbitmq-server-860
Compile on OTP 19.0
2 parents f7c54b9 + 35d9cf6 commit 0923c96

File tree

87 files changed

+957
-1298
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+957
-1298
lines changed

Makefile

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,6 @@ ifdef CREDIT_FLOW_TRACING
9191
RMQ_ERLC_OPTS += -DCREDIT_FLOW_TRACING=true
9292
endif
9393

94-
ERTS_VER := $(shell erl -version 2>&1 | sed -E 's/.* version //')
95-
USE_SPECS_MIN_ERTS_VER = 5.11
96-
ifeq ($(call compare_version,$(ERTS_VER),$(USE_SPECS_MIN_ERTS_VER),>=),true)
97-
RMQ_ERLC_OPTS += -Duse_specs
98-
endif
99-
10094
ifndef USE_PROPER_QC
10195
# PropEr needs to be installed for property checking
10296
# http://proper.softlab.ntua.gr/

include/gm_specs.hrl

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,11 @@
1414
%% Copyright (c) 2007-2015 Pivotal Software, Inc. All rights reserved.
1515
%%
1616

17-
-ifdef(use_specs).
17+
-type callback_result() :: 'ok' | {'stop', any()} | {'become', atom(), args()}.
18+
-type args() :: any().
19+
-type members() :: [pid()].
1820

19-
-type(callback_result() :: 'ok' | {'stop', any()} | {'become', atom(), args()}).
20-
-type(args() :: any()).
21-
-type(members() :: [pid()]).
22-
23-
-spec(joined/2 :: (args(), members()) -> callback_result()).
24-
-spec(members_changed/3 :: (args(), members(),members()) -> callback_result()).
25-
-spec(handle_msg/3 :: (args(), pid(), any()) -> callback_result()).
26-
-spec(handle_terminate/2 :: (args(), term()) -> any()).
27-
28-
-endif.
21+
-spec joined(args(), members()) -> callback_result().
22+
-spec members_changed(args(), members(),members()) -> callback_result().
23+
-spec handle_msg(args(), pid(), any()) -> callback_result().
24+
-spec handle_terminate(args(), term()) -> any().

packaging/standalone/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ clean:
109109
generate_release:
110110
erlc \
111111
-I $(TARGET_DIR)/include/ -o src -Wall \
112-
-v +debug_info -Duse_specs -Duse_proper_qc \
112+
-v +debug_info -Duse_proper_qc \
113113
-pa $(TARGET_DIR)/ebin/ src/rabbit_release.erl
114114
ERL_LIBS="$(TARGET_DIR)/plugins:$$ERL_LIBS" \
115115
erl \

src/background_gc.erl

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,9 @@
3232

3333
%%----------------------------------------------------------------------------
3434

35-
-ifdef(use_specs).
36-
37-
-spec(start_link/0 :: () -> {'ok', pid()} | {'error', any()}).
38-
-spec(run/0 :: () -> 'ok').
39-
-spec(gc/0 :: () -> 'ok').
40-
41-
-endif.
35+
-spec start_link() -> {'ok', pid()} | {'error', any()}.
36+
-spec run() -> 'ok'.
37+
-spec gc() -> 'ok'.
4238

4339
%%----------------------------------------------------------------------------
4440

src/delegate.erl

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -57,28 +57,24 @@
5757

5858
%%----------------------------------------------------------------------------
5959

60-
-ifdef(use_specs).
61-
6260
-export_type([monitor_ref/0]).
6361

64-
-type(monitor_ref() :: reference() | {atom(), pid()}).
65-
-type(fun_or_mfa(A) :: fun ((pid()) -> A) | {atom(), atom(), [any()]}).
62+
-type monitor_ref() :: reference() | {atom(), pid()}.
63+
-type fun_or_mfa(A) :: fun ((pid()) -> A) | {atom(), atom(), [any()]}.
6664

67-
-spec(start_link/1 ::
68-
(non_neg_integer()) -> {'ok', pid()} | ignore | {'error', any()}).
69-
-spec(invoke/2 :: ( pid(), fun_or_mfa(A)) -> A;
70-
([pid()], fun_or_mfa(A)) -> {[{pid(), A}],
71-
[{pid(), term()}]}).
72-
-spec(invoke_no_result/2 :: (pid() | [pid()], fun_or_mfa(any())) -> 'ok').
73-
-spec(monitor/2 :: ('process', pid()) -> monitor_ref()).
74-
-spec(demonitor/1 :: (monitor_ref()) -> 'true').
65+
-spec start_link
66+
(non_neg_integer()) -> {'ok', pid()} | ignore | {'error', any()}.
67+
-spec invoke
68+
( pid(), fun_or_mfa(A)) -> A;
69+
([pid()], fun_or_mfa(A)) -> {[{pid(), A}], [{pid(), term()}]}.
70+
-spec invoke_no_result(pid() | [pid()], fun_or_mfa(any())) -> 'ok'.
71+
-spec monitor('process', pid()) -> monitor_ref().
72+
-spec demonitor(monitor_ref()) -> 'true'.
7573

76-
-spec(call/2 ::
74+
-spec call
7775
( pid(), any()) -> any();
78-
([pid()], any()) -> {[{pid(), any()}], [{pid(), term()}]}).
79-
-spec(cast/2 :: (pid() | [pid()], any()) -> 'ok').
80-
81-
-endif.
76+
([pid()], any()) -> {[{pid(), any()}], [{pid(), term()}]}.
77+
-spec cast(pid() | [pid()], any()) -> 'ok'.
8278

8379
%%----------------------------------------------------------------------------
8480

src/delegate_sup.erl

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,8 @@
2626

2727
%%----------------------------------------------------------------------------
2828

29-
-ifdef(use_specs).
30-
31-
-spec(start_link/1 :: (integer()) -> rabbit_types:ok_pid_or_error()).
32-
-spec(count/1 :: ([node()]) -> integer()).
33-
34-
-endif.
29+
-spec start_link(integer()) -> rabbit_types:ok_pid_or_error().
30+
-spec count([node()]) -> integer().
3531

3632
%%----------------------------------------------------------------------------
3733

src/dtree.erl

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -37,29 +37,25 @@
3737

3838
%%----------------------------------------------------------------------------
3939

40-
-ifdef(use_specs).
41-
4240
-export_type([?MODULE/0]).
4341

44-
-opaque(?MODULE() :: {gb_trees:tree(), gb_trees:tree()}).
45-
46-
-type(pk() :: any()).
47-
-type(sk() :: any()).
48-
-type(val() :: any()).
49-
-type(kv() :: {pk(), val()}).
50-
51-
-spec(empty/0 :: () -> ?MODULE()).
52-
-spec(insert/4 :: (pk(), [sk()], val(), ?MODULE()) -> ?MODULE()).
53-
-spec(take/3 :: ([pk()], sk(), ?MODULE()) -> {[kv()], ?MODULE()}).
54-
-spec(take/2 :: (sk(), ?MODULE()) -> {[kv()], ?MODULE()}).
55-
-spec(take_all/2 :: (sk(), ?MODULE()) -> {[kv()], ?MODULE()}).
56-
-spec(drop/2 :: (pk(), ?MODULE()) -> ?MODULE()).
57-
-spec(is_defined/2 :: (sk(), ?MODULE()) -> boolean()).
58-
-spec(is_empty/1 :: (?MODULE()) -> boolean()).
59-
-spec(smallest/1 :: (?MODULE()) -> kv()).
60-
-spec(size/1 :: (?MODULE()) -> non_neg_integer()).
61-
62-
-endif.
42+
-opaque ?MODULE() :: {gb_trees:tree(), gb_trees:tree()}.
43+
44+
-type pk() :: any().
45+
-type sk() :: any().
46+
-type val() :: any().
47+
-type kv() :: {pk(), val()}.
48+
49+
-spec empty() -> ?MODULE().
50+
-spec insert(pk(), [sk()], val(), ?MODULE()) -> ?MODULE().
51+
-spec take([pk()], sk(), ?MODULE()) -> {[kv()], ?MODULE()}.
52+
-spec take(sk(), ?MODULE()) -> {[kv()], ?MODULE()}.
53+
-spec take_all(sk(), ?MODULE()) -> {[kv()], ?MODULE()}.
54+
-spec drop(pk(), ?MODULE()) -> ?MODULE().
55+
-spec is_defined(sk(), ?MODULE()) -> boolean().
56+
-spec is_empty(?MODULE()) -> boolean().
57+
-spec smallest(?MODULE()) -> kv().
58+
-spec size(?MODULE()) -> non_neg_integer().
6359

6460
%%----------------------------------------------------------------------------
6561

src/file_handle_cache.erl

Lines changed: 42 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -234,58 +234,53 @@
234234
%% Specs
235235
%%----------------------------------------------------------------------------
236236

237-
-ifdef(use_specs).
238-
239-
-type(ref() :: any()).
240-
-type(ok_or_error() :: 'ok' | {'error', any()}).
241-
-type(val_or_error(T) :: {'ok', T} | {'error', any()}).
242-
-type(position() :: ('bof' | 'eof' | non_neg_integer() |
237+
-type ref() :: any().
238+
-type ok_or_error() :: 'ok' | {'error', any()}.
239+
-type val_or_error(T) :: {'ok', T} | {'error', any()}.
240+
-type position() :: ('bof' | 'eof' | non_neg_integer() |
243241
{('bof' |'eof'), non_neg_integer()} |
244-
{'cur', integer()})).
245-
-type(offset() :: non_neg_integer()).
242+
{'cur', integer()}).
243+
-type offset() :: non_neg_integer().
246244

247-
-spec(register_callback/3 :: (atom(), atom(), [any()]) -> 'ok').
248-
-spec(open/3 ::
245+
-spec register_callback(atom(), atom(), [any()]) -> 'ok'.
246+
-spec open
249247
(file:filename(), [any()],
250248
[{'write_buffer', (non_neg_integer() | 'infinity' | 'unbuffered')} |
251-
{'read_buffer', (non_neg_integer() | 'unbuffered')}])
252-
-> val_or_error(ref())).
253-
-spec(open_with_absolute_path/3 ::
249+
{'read_buffer', (non_neg_integer() | 'unbuffered')}]) ->
250+
val_or_error(ref()).
251+
-spec open_with_absolute_path
254252
(file:filename(), [any()],
255253
[{'write_buffer', (non_neg_integer() | 'infinity' | 'unbuffered')} |
256-
{'read_buffer', (non_neg_integer() | 'unbuffered')}])
257-
-> val_or_error(ref())).
258-
-spec(close/1 :: (ref()) -> ok_or_error()).
259-
-spec(read/2 :: (ref(), non_neg_integer()) ->
260-
val_or_error([char()] | binary()) | 'eof').
261-
-spec(append/2 :: (ref(), iodata()) -> ok_or_error()).
262-
-spec(sync/1 :: (ref()) -> ok_or_error()).
263-
-spec(position/2 :: (ref(), position()) -> val_or_error(offset())).
264-
-spec(truncate/1 :: (ref()) -> ok_or_error()).
265-
-spec(current_virtual_offset/1 :: (ref()) -> val_or_error(offset())).
266-
-spec(current_raw_offset/1 :: (ref()) -> val_or_error(offset())).
267-
-spec(flush/1 :: (ref()) -> ok_or_error()).
268-
-spec(copy/3 :: (ref(), ref(), non_neg_integer()) ->
269-
val_or_error(non_neg_integer())).
270-
-spec(delete/1 :: (ref()) -> ok_or_error()).
271-
-spec(clear/1 :: (ref()) -> ok_or_error()).
272-
-spec(set_maximum_since_use/1 :: (non_neg_integer()) -> 'ok').
273-
-spec(obtain/0 :: () -> 'ok').
274-
-spec(obtain/1 :: (non_neg_integer()) -> 'ok').
275-
-spec(release/0 :: () -> 'ok').
276-
-spec(release/1 :: (non_neg_integer()) -> 'ok').
277-
-spec(transfer/1 :: (pid()) -> 'ok').
278-
-spec(transfer/2 :: (pid(), non_neg_integer()) -> 'ok').
279-
-spec(with_handle/1 :: (fun(() -> A)) -> A).
280-
-spec(with_handle/2 :: (non_neg_integer(), fun(() -> A)) -> A).
281-
-spec(set_limit/1 :: (non_neg_integer()) -> 'ok').
282-
-spec(get_limit/0 :: () -> non_neg_integer()).
283-
-spec(info_keys/0 :: () -> rabbit_types:info_keys()).
284-
-spec(info/0 :: () -> rabbit_types:infos()).
285-
-spec(info/1 :: ([atom()]) -> rabbit_types:infos()).
286-
-spec(ulimit/0 :: () -> 'unknown' | non_neg_integer()).
287-
288-
-endif.
254+
{'read_buffer', (non_neg_integer() | 'unbuffered')}]) ->
255+
val_or_error(ref()).
256+
-spec close(ref()) -> ok_or_error().
257+
-spec read
258+
(ref(), non_neg_integer()) -> val_or_error([char()] | binary()) | 'eof'.
259+
-spec append(ref(), iodata()) -> ok_or_error().
260+
-spec sync(ref()) -> ok_or_error().
261+
-spec position(ref(), position()) -> val_or_error(offset()).
262+
-spec truncate(ref()) -> ok_or_error().
263+
-spec current_virtual_offset(ref()) -> val_or_error(offset()).
264+
-spec current_raw_offset(ref()) -> val_or_error(offset()).
265+
-spec flush(ref()) -> ok_or_error().
266+
-spec copy(ref(), ref(), non_neg_integer()) -> val_or_error(non_neg_integer()).
267+
-spec delete(ref()) -> ok_or_error().
268+
-spec clear(ref()) -> ok_or_error().
269+
-spec set_maximum_since_use(non_neg_integer()) -> 'ok'.
270+
-spec obtain() -> 'ok'.
271+
-spec obtain(non_neg_integer()) -> 'ok'.
272+
-spec release() -> 'ok'.
273+
-spec release(non_neg_integer()) -> 'ok'.
274+
-spec transfer(pid()) -> 'ok'.
275+
-spec transfer(pid(), non_neg_integer()) -> 'ok'.
276+
-spec with_handle(fun(() -> A)) -> A.
277+
-spec with_handle(non_neg_integer(), fun(() -> A)) -> A.
278+
-spec set_limit(non_neg_integer()) -> 'ok'.
279+
-spec get_limit() -> non_neg_integer().
280+
-spec info_keys() -> rabbit_types:info_keys().
281+
-spec info() -> rabbit_types:infos().
282+
-spec info([atom()]) -> rabbit_types:infos().
283+
-spec ulimit() -> 'unknown' | non_neg_integer().
289284

290285
%%----------------------------------------------------------------------------
291286
-define(INFO_KEYS, [total_limit, total_used, sockets_limit, sockets_used]).
@@ -1482,7 +1477,7 @@ notify_age(CStates, AverageAge) ->
14821477
notify_age0(Clients, CStates, Required) ->
14831478
case [CState || CState <- CStates, CState#cstate.callback =/= undefined] of
14841479
[] -> ok;
1485-
Notifications -> S = random:uniform(length(Notifications)),
1480+
Notifications -> S = rand_compat:uniform(length(Notifications)),
14861481
{L1, L2} = lists:split(S, Notifications),
14871482
notify(Clients, Required, L2 ++ L1)
14881483
end.

src/gatherer.erl

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,13 @@
3939

4040
%%----------------------------------------------------------------------------
4141

42-
-ifdef(use_specs).
43-
44-
-spec(start_link/0 :: () -> rabbit_types:ok_pid_or_error()).
45-
-spec(stop/1 :: (pid()) -> 'ok').
46-
-spec(fork/1 :: (pid()) -> 'ok').
47-
-spec(finish/1 :: (pid()) -> 'ok').
48-
-spec(in/2 :: (pid(), any()) -> 'ok').
49-
-spec(sync_in/2 :: (pid(), any()) -> 'ok').
50-
-spec(out/1 :: (pid()) -> {'value', any()} | 'empty').
51-
52-
-endif.
42+
-spec start_link() -> rabbit_types:ok_pid_or_error().
43+
-spec stop(pid()) -> 'ok'.
44+
-spec fork(pid()) -> 'ok'.
45+
-spec finish(pid()) -> 'ok'.
46+
-spec in(pid(), any()) -> 'ok'.
47+
-spec sync_in(pid(), any()) -> 'ok'.
48+
-spec out(pid()) -> {'value', any()} | 'empty'.
5349

5450
%%----------------------------------------------------------------------------
5551

src/gm.erl

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -391,10 +391,6 @@
391391
%% For INSTR_MOD callbacks
392392
-export([call/3, cast/2, monitor/1, demonitor/1]).
393393

394-
-ifndef(use_specs).
395-
-export([behaviour_info/1]).
396-
-endif.
397-
398394
-export([table_definitions/0]).
399395

400396
-define(GROUP_TABLE, gm_group).
@@ -436,22 +432,20 @@
436432

437433
-define(TAG, '$gm').
438434

439-
-ifdef(use_specs).
440-
441435
-export_type([group_name/0]).
442436

443-
-type(group_name() :: any()).
444-
-type(txn_fun() :: fun((fun(() -> any())) -> any())).
437+
-type group_name() :: any().
438+
-type txn_fun() :: fun((fun(() -> any())) -> any()).
445439

446-
-spec(create_tables/0 :: () -> 'ok' | {'aborted', any()}).
447-
-spec(start_link/4 :: (group_name(), atom(), any(), txn_fun()) ->
448-
rabbit_types:ok_pid_or_error()).
449-
-spec(leave/1 :: (pid()) -> 'ok').
450-
-spec(broadcast/2 :: (pid(), any()) -> 'ok').
451-
-spec(confirmed_broadcast/2 :: (pid(), any()) -> 'ok').
452-
-spec(info/1 :: (pid()) -> rabbit_types:infos()).
453-
-spec(validate_members/2 :: (pid(), [pid()]) -> 'ok').
454-
-spec(forget_group/1 :: (group_name()) -> 'ok').
440+
-spec create_tables() -> 'ok' | {'aborted', any()}.
441+
-spec start_link(group_name(), atom(), any(), txn_fun()) ->
442+
rabbit_types:ok_pid_or_error().
443+
-spec leave(pid()) -> 'ok'.
444+
-spec broadcast(pid(), any()) -> 'ok'.
445+
-spec confirmed_broadcast(pid(), any()) -> 'ok'.
446+
-spec info(pid()) -> rabbit_types:infos().
447+
-spec validate_members(pid(), [pid()]) -> 'ok'.
448+
-spec forget_group(group_name()) -> 'ok'.
455449

456450
%% The joined, members_changed and handle_msg callbacks can all return
457451
%% any of the following terms:
@@ -497,15 +491,6 @@
497491
-callback handle_terminate(Args :: term(), Reason :: term()) ->
498492
ok | term().
499493

500-
-else.
501-
502-
behaviour_info(callbacks) ->
503-
[{joined, 2}, {members_changed, 3}, {handle_msg, 3}, {handle_terminate, 2}];
504-
behaviour_info(_Other) ->
505-
undefined.
506-
507-
-endif.
508-
509494
create_tables() ->
510495
create_tables([?TABLE]).
511496

@@ -551,9 +536,6 @@ forget_group(GroupName) ->
551536

552537
init([GroupName, Module, Args, TxnFun]) ->
553538
put(process_name, {?MODULE, GroupName}),
554-
_ = random:seed(erlang:phash2([node()]),
555-
time_compat:monotonic_time(),
556-
time_compat:unique_integer()),
557539
Self = make_member(GroupName),
558540
gen_server2:cast(self(), join),
559541
{ok, #state { self = Self,
@@ -1084,7 +1066,7 @@ join_group(Self, GroupName, #gm_group { members = Members } = Group, TxnFun) ->
10841066
prune_or_create_group(Self, GroupName, TxnFun),
10851067
TxnFun);
10861068
Alive ->
1087-
Left = lists:nth(random:uniform(length(Alive)), Alive),
1069+
Left = lists:nth(rand_compat:uniform(length(Alive)), Alive),
10881070
Handler =
10891071
fun () ->
10901072
join_group(

0 commit comments

Comments
 (0)