diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2014-09-18 11:25:42 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2014-09-18 11:25:42 +0100 |
commit | 3fd6e0569009370eae058da55c6a218ecf71dfbc (patch) | |
tree | 031cce177ba1be47c691aac85f50f2d3a9c251e7 | |
parent | 258969e238ff25bbd84562c823a466aef99a0d11 (diff) | |
parent | 5fcbee2c4923e0c97563ec64cd81e0b90b31b969 (diff) | |
download | rabbitmq-server-3fd6e0569009370eae058da55c6a218ecf71dfbc.tar.gz |
Merge bug25824
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | src/credit_flow.erl | 2 | ||||
-rw-r--r-- | src/dtree.erl | 2 | ||||
-rw-r--r-- | src/lqueue.erl | 2 | ||||
-rw-r--r-- | src/pmon.erl | 2 | ||||
-rw-r--r-- | src/rabbit_amqqueue_process.erl | 2 | ||||
-rw-r--r-- | src/rabbit_backing_queue.erl | 4 | ||||
-rw-r--r-- | src/rabbit_binding.erl | 4 | ||||
-rw-r--r-- | src/rabbit_cli.erl | 13 | ||||
-rw-r--r-- | src/rabbit_mirror_queue_master.erl | 8 | ||||
-rw-r--r-- | src/rabbit_misc.erl | 20 | ||||
-rw-r--r-- | src/rabbit_msg_store.erl | 4 | ||||
-rw-r--r-- | src/rabbit_plugins.erl | 4 | ||||
-rw-r--r-- | src/rabbit_plugins_main.erl | 5 | ||||
-rw-r--r-- | src/rabbit_queue_index.erl | 8 | ||||
-rw-r--r-- | src/rabbit_runtime_parameter.erl | 2 | ||||
-rw-r--r-- | src/rabbit_variable_queue.erl | 12 | ||||
-rw-r--r-- | src/supervisor2.erl | 2 |
18 files changed, 57 insertions, 43 deletions
@@ -40,9 +40,9 @@ BASIC_PLT=basic.plt RABBIT_PLT=rabbit.plt ifndef USE_SPECS -# our type specs rely on callback specs, which are available in R15B +# our type specs rely on dict:dict/0 etc, which are only available in 17.0 # upwards. -USE_SPECS:=$(shell erl -noshell -eval 'io:format([list_to_integer(X) || X <- string:tokens(erlang:system_info(version), ".")] >= [5,9]), halt().') +USE_SPECS:=$(shell erl -noshell -eval 'io:format([list_to_integer(X) || X <- string:tokens(erlang:system_info(version), ".")] >= [5,11]), halt().') endif ifndef USE_PROPER_QC diff --git a/src/credit_flow.erl b/src/credit_flow.erl index 3a640df1..89320621 100644 --- a/src/credit_flow.erl +++ b/src/credit_flow.erl @@ -37,6 +37,8 @@ -ifdef(use_specs). +-export_type([bump_msg/0]). + -opaque(bump_msg() :: {pid(), non_neg_integer()}). -type(credit_spec() :: {non_neg_integer(), non_neg_integer()}). diff --git a/src/dtree.erl b/src/dtree.erl index 89a34c9e..9013bd6d 100644 --- a/src/dtree.erl +++ b/src/dtree.erl @@ -41,7 +41,7 @@ -export_type([?MODULE/0]). --opaque(?MODULE() :: {gb_tree(), gb_tree()}). +-opaque(?MODULE() :: {gb_trees:tree(), gb_trees:tree()}). -type(pk() :: any()). -type(sk() :: any()). diff --git a/src/lqueue.erl b/src/lqueue.erl index 787f5088..62f60d5f 100644 --- a/src/lqueue.erl +++ b/src/lqueue.erl @@ -25,7 +25,7 @@ -export_type([?MODULE/0]). --opaque(?MODULE() :: {non_neg_integer(), ?QUEUE()}). +-opaque(?MODULE() :: {non_neg_integer(), ?QUEUE:?QUEUE()}). -type(value() :: any()). -type(result() :: 'empty' | {'value', value()}). diff --git a/src/pmon.erl b/src/pmon.erl index de3e9fea..a94f5a67 100644 --- a/src/pmon.erl +++ b/src/pmon.erl @@ -29,7 +29,7 @@ -export_type([?MODULE/0]). --opaque(?MODULE() :: #state{dict :: dict(), +-opaque(?MODULE() :: #state{dict :: dict:dict(), module :: atom()}). -type(item() :: pid() | {atom(), node()}). diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index fcf17381..b06da4c1 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -64,7 +64,7 @@ -spec(info_keys/0 :: () -> rabbit_types:info_keys()). -spec(init_with_backing_queue_state/7 :: (rabbit_types:amqqueue(), atom(), tuple(), any(), - [rabbit_types:delivery()], pmon:pmon(), dict()) -> #q{}). + [rabbit_types:delivery()], pmon:pmon(), dict:dict()) -> #q{}). -endif. diff --git a/src/rabbit_backing_queue.erl b/src/rabbit_backing_queue.erl index b4bdb0af..4ce133c3 100644 --- a/src/rabbit_backing_queue.erl +++ b/src/rabbit_backing_queue.erl @@ -255,8 +255,8 @@ behaviour_info(callbacks) -> {fetch, 2}, {ack, 2}, {requeue, 2}, {ackfold, 4}, {fold, 3}, {len, 1}, {is_empty, 1}, {depth, 1}, {set_ram_duration_target, 2}, {ram_duration, 1}, {needs_timeout, 1}, {timeout, 1}, - {handle_pre_hibernate, 1}, {resume, 1}, {msg_rates, 1}, {info_keys, 0}, - {infos, 2}, {invoke, 3}, {is_duplicate, 2}] ; + {handle_pre_hibernate, 1}, {resume, 1}, {msg_rates, 1}, + {info, 2}, {invoke, 3}, {is_duplicate, 2}] ; behaviour_info(_Other) -> undefined. diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl index 12082af8..12d4df99 100644 --- a/src/rabbit_binding.erl +++ b/src/rabbit_binding.erl @@ -52,7 +52,9 @@ rabbit_types:ok_or_error(rabbit_types:amqp_error()))). -type(bindings() :: [rabbit_types:binding()]). --opaque(deletions() :: dict()). +%% TODO this should really be opaque but that seems to confuse 17.1's +%% dialyzer into objecting to everything that uses it. +-type(deletions() :: dict:dict()). -spec(recover/2 :: ([rabbit_exchange:name()], [rabbit_amqqueue:name()]) -> 'ok'). diff --git a/src/rabbit_cli.erl b/src/rabbit_cli.erl index 0c19c727..2981f3b2 100644 --- a/src/rabbit_cli.erl +++ b/src/rabbit_cli.erl @@ -24,14 +24,17 @@ -ifdef(use_specs). -type(optdef() :: flag | {option, string()}). +-type(parse_result() :: {'ok', {atom(), [{string(), string()}], [string()]}} | + 'no_command'). + +-spec(main/3 :: (fun (([string()], string()) -> parse_result()), + fun ((atom(), atom(), [any()], [any()]) -> any()), + atom()) -> no_return()). +-spec(usage/1 :: (atom()) -> no_return()). -spec(parse_arguments/4 :: ([{atom(), [{string(), optdef()}]} | atom()], - [{string(), optdef()}], - string(), - [string()]) - -> {'ok', {atom(), [{string(), string()}], [string()]}} | - 'no_command'). + [{string(), optdef()}], string(), [string()]) -> parse_result()). -endif. diff --git a/src/rabbit_mirror_queue_master.erl b/src/rabbit_mirror_queue_master.erl index 5ce22271..f1b1a8a5 100644 --- a/src/rabbit_mirror_queue_master.erl +++ b/src/rabbit_mirror_queue_master.erl @@ -56,14 +56,14 @@ coordinator :: pid(), backing_queue :: atom(), backing_queue_state :: any(), - seen_status :: dict(), + seen_status :: dict:dict(), confirmed :: [rabbit_guid:guid()], - known_senders :: set() + known_senders :: sets:set() }). -spec(promote_backing_queue_state/8 :: - (rabbit_amqqueue:name(), pid(), atom(), any(), pid(), [any()], dict(), - [pid()]) -> master_state()). + (rabbit_amqqueue:name(), pid(), atom(), any(), pid(), [any()], + dict:dict(), [pid()]) -> master_state()). -spec(sender_death_fun/0 :: () -> death_fun()). -spec(depth_fun/0 :: () -> depth_fun()). -spec(init_with_existing_bq/3 :: (rabbit_types:amqqueue(), atom(), any()) -> diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index 3696698c..a984d1f9 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -125,8 +125,11 @@ rabbit_types:r(any()), [binary()]) -> 'ok' | rabbit_types:connection_exit()). -spec(assert_field_equivalence/4 :: - (any(), any(), rabbit_types:r(any()), atom()) -> + (any(), any(), rabbit_types:r(any()), atom() | binary()) -> 'ok' | rabbit_types:connection_exit()). +-spec(equivalence_fail/4 :: + (any(), any(), rabbit_types:r(any()), atom() | binary()) -> + rabbit_types:connection_exit()). -spec(dirty_read/1 :: ({atom(), any()}) -> rabbit_types:ok_or_error2(any(), 'not_found')). -spec(table_lookup/2 :: @@ -188,7 +191,7 @@ -spec(format_stderr/2 :: (string(), [any()]) -> 'ok'). -spec(unfold/2 :: (fun ((A) -> ({'true', B, A} | 'false')), A) -> {[B], A}). -spec(ceil/1 :: (number()) -> integer()). --spec(queue_fold/3 :: (fun ((any(), B) -> B), B, queue()) -> B). +-spec(queue_fold/3 :: (fun ((any(), B) -> B), B, queue:queue()) -> B). -spec(sort_field_table/1 :: (rabbit_framing:amqp_table()) -> rabbit_framing:amqp_table()). -spec(pid_to_string/1 :: (pid()) -> string()). @@ -199,17 +202,18 @@ (string(), string(), ('lt' | 'lte' | 'eq' | 'gte' | 'gt')) -> boolean()). -spec(version_minor_equivalent/2 :: (string(), string()) -> boolean()). --spec(dict_cons/3 :: (any(), any(), dict()) -> dict()). +-spec(dict_cons/3 :: (any(), any(), dict:dict()) -> dict:dict()). -spec(orddict_cons/3 :: (any(), any(), orddict:orddict()) -> orddict:orddict()). --spec(gb_trees_cons/3 :: (any(), any(), gb_tree()) -> gb_tree()). --spec(gb_trees_fold/3 :: (fun ((any(), any(), A) -> A), A, gb_tree()) -> A). +-spec(gb_trees_cons/3 :: (any(), any(), gb_trees:tree()) -> gb_trees:tree()). +-spec(gb_trees_fold/3 :: (fun ((any(), any(), A) -> A), A, gb_trees:tree()) + -> A). -spec(gb_trees_foreach/2 :: - (fun ((any(), any()) -> any()), gb_tree()) -> 'ok'). + (fun ((any(), any()) -> any()), gb_trees:tree()) -> 'ok'). -spec(all_module_attributes/1 :: (atom()) -> [{atom(), atom(), [term()]}]). -spec(build_acyclic_graph/3 :: (graph_vertex_fun(), graph_edge_fun(), [{atom(), [term()]}]) - -> rabbit_types:ok_or_error2(digraph(), + -> rabbit_types:ok_or_error2(digraph:digraph(), {'vertex', 'duplicate', digraph:vertex()} | {'edge', ({bad_vertex, digraph:vertex()} | {bad_edge, [digraph:vertex()]}), @@ -226,7 +230,7 @@ -spec(format_message_queue/2 :: (any(), priority_queue:q()) -> term()). -spec(append_rpc_all_nodes/4 :: ([node()], atom(), atom(), [any()]) -> [any()]). -spec(os_cmd/1 :: (string()) -> string()). --spec(gb_sets_difference/2 :: (gb_set(), gb_set()) -> gb_set()). +-spec(gb_sets_difference/2 :: (gb_sets:set(), gb_sets:set()) -> gb_sets:set()). -spec(version/0 :: () -> string()). -spec(which_applications/0 :: () -> [{atom(), string(), string()}]). -spec(sequence_error/1 :: ([({'error', any()} | any())]) diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl index d97c2ad5..b829ae94 100644 --- a/src/rabbit_msg_store.erl +++ b/src/rabbit_msg_store.erl @@ -126,7 +126,7 @@ -type(client_msstate() :: #client_msstate { server :: server(), client_ref :: client_ref(), - file_handle_cache :: dict(), + file_handle_cache :: dict:dict(), index_state :: any(), index_module :: atom(), dir :: file:filename(), @@ -139,7 +139,7 @@ fun ((A) -> 'finished' | {rabbit_types:msg_id(), non_neg_integer(), A})). -type(maybe_msg_id_fun() :: - 'undefined' | fun ((gb_set(), 'written' | 'ignored') -> any())). + 'undefined' | fun ((gb_sets:set(), 'written' | 'ignored') -> any())). -type(maybe_close_fds_fun() :: 'undefined' | fun (() -> 'ok')). -type(deletion_thunk() :: fun (() -> boolean())). diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl index 04db5d5d..84a0d022 100644 --- a/src/rabbit_plugins.erl +++ b/src/rabbit_plugins.erl @@ -41,10 +41,8 @@ ensure(FileJustChanged) -> {ok, OurFile} = application:get_env(rabbit, enabled_plugins_file), case OurFile of FileJustChanged -> - {ok, Dir} = application:get_env(rabbit, plugins_dir), Enabled = read_enabled(OurFile), - Wanted = dependencies(false, Enabled, list(Dir)), - prepare_plugins(Enabled), + Wanted = prepare_plugins(Enabled), Current = active(), Start = Wanted -- Current, Stop = Current -- Wanted, diff --git a/src/rabbit_plugins_main.erl b/src/rabbit_plugins_main.erl index aed95760..7fd10435 100644 --- a/src/rabbit_plugins_main.erl +++ b/src/rabbit_plugins_main.erl @@ -66,6 +66,11 @@ parse_arguments(CmdLine, NodeStr) -> action(Command, Node, Args, Opts, PluginsFile, PluginsDir) -> All = rabbit_plugins:list(PluginsDir), Enabled = rabbit_plugins:read_enabled(PluginsFile), + case Enabled -- plugin_names(All) of + [] -> ok; + Missing -> io:format("WARNING - plugins currently enabled but " + "missing: ~p~n~n", [Missing]) + end, Implicit = rabbit_plugins:dependencies(false, Enabled, All), State = #cli{file = PluginsFile, dir = PluginsDir, diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl index f21b44bc..0a2c88d4 100644 --- a/src/rabbit_queue_index.erl +++ b/src/rabbit_queue_index.erl @@ -181,19 +181,19 @@ -type(segment() :: ('undefined' | #segment { num :: non_neg_integer(), path :: file:filename(), - journal_entries :: array(), + journal_entries :: array:array(), unacked :: non_neg_integer() })). -type(seq_id() :: integer()). --type(seg_dict() :: {dict(), [segment()]}). --type(on_sync_fun() :: fun ((gb_set()) -> ok)). +-type(seg_dict() :: {dict:dict(), [segment()]}). +-type(on_sync_fun() :: fun ((gb_sets:set()) -> ok)). -type(qistate() :: #qistate { dir :: file:filename(), segments :: 'undefined' | seg_dict(), journal_handle :: hdl(), dirty_count :: integer(), max_journal_entries :: non_neg_integer(), on_sync :: on_sync_fun(), - unconfirmed :: gb_set() + unconfirmed :: gb_sets:set() }). -type(contains_predicate() :: fun ((rabbit_types:msg_id()) -> boolean())). -type(walker(A) :: fun ((A) -> 'finished' | diff --git a/src/rabbit_runtime_parameter.erl b/src/rabbit_runtime_parameter.erl index 3e81ea74..3a5d9606 100644 --- a/src/rabbit_runtime_parameter.erl +++ b/src/rabbit_runtime_parameter.erl @@ -32,7 +32,7 @@ behaviour_info(callbacks) -> [ - {validate, 4}, + {validate, 5}, {notify, 4}, {notify_clear, 3} ]; diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl index 03ba2819..d076b534 100644 --- a/src/rabbit_variable_queue.erl +++ b/src/rabbit_variable_queue.erl @@ -339,8 +339,8 @@ q3 :: ?QUEUE:?QUEUE(), q4 :: ?QUEUE:?QUEUE(), next_seq_id :: seq_id(), - ram_pending_ack :: gb_tree(), - disk_pending_ack :: gb_tree(), + ram_pending_ack :: gb_trees:tree(), + disk_pending_ack :: gb_trees:tree(), index_state :: any(), msg_store_clients :: 'undefined' | {{any(), binary()}, {any(), binary()}}, @@ -362,10 +362,10 @@ out_counter :: non_neg_integer(), in_counter :: non_neg_integer(), rates :: rates(), - msgs_on_disk :: gb_set(), - msg_indices_on_disk :: gb_set(), - unconfirmed :: gb_set(), - confirmed :: gb_set(), + msgs_on_disk :: gb_sets:set(), + msg_indices_on_disk :: gb_sets:set(), + unconfirmed :: gb_sets:set(), + confirmed :: gb_sets:set(), ack_out_counter :: non_neg_integer(), ack_in_counter :: non_neg_integer() }). %% Duplicated from rabbit_backing_queue diff --git a/src/supervisor2.erl b/src/supervisor2.erl index 92ecb0df..57c3bfc1 100644 --- a/src/supervisor2.erl +++ b/src/supervisor2.erl @@ -137,7 +137,7 @@ -record(state, {name, strategy :: strategy(), children = [] :: [child_rec()], - dynamics :: ?DICT() | ?SET(), + dynamics :: ?DICT:?DICT() | ?SET:?SET(), intensity :: non_neg_integer(), period :: pos_integer(), restarts = [], |