summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2017-07-10 21:43:10 +0300
committerMichael Klishin <michael@clojurewerkz.org>2017-07-10 21:43:10 +0300
commit976d4a3406511daa674d85a9af4a2d3b43fda82f (patch)
tree873813f3332df4c39cc91fd4c4337430d407219b /src
parenta451a4b1158682d5931d59f00dfdfc411eadaef4 (diff)
parente5fea8d1735f7de245afc9132f71f94ef03b8b13 (diff)
downloadrabbitmq-server-git-976d4a3406511daa674d85a9af4a2d3b43fda82f.tar.gz
Merge branch 'stable'
Conflicts: src/rabbit_amqqueue.erl
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_amqqueue.erl8
-rw-r--r--src/rabbit_amqqueue_process.erl2
-rw-r--r--src/rabbit_core_metrics_gc.erl2
-rw-r--r--src/rabbit_mirror_queue_sync.erl2
4 files changed, 11 insertions, 3 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index 81eb5edf6e..d6775a4347 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -29,7 +29,8 @@
-export([list/0, list/1, info_keys/0, info/1, info/2, info_all/1, info_all/2,
emit_info_all/5, list_local/1, info_local/1,
emit_info_local/4, emit_info_down/4]).
--export([list_down/1, count/1, list_names/0]).
+-export([list_down/1, count/1, list_names/0,
+ list_names/0, list_local_names/0]).
-export([force_event_refresh/1, notify_policy_changed/1]).
-export([consumers/1, consumers_all/1, emit_consumers_all/4, consumer_info_keys/0]).
-export([basic_get/4, basic_consume/11, basic_cancel/5, notify_decorators/1]).
@@ -592,6 +593,11 @@ list() -> mnesia:dirty_match_object(rabbit_queue, #amqqueue{_ = '_'}).
list_names() -> mnesia:dirty_all_keys(rabbit_queue).
+list_local_names() ->
+ [ Q#amqqueue.name || #amqqueue{state = State, pid = QPid} = Q <- list(),
+ State =/= crashed,
+ node() =:= node(QPid) ].
+
list(VHostPath) -> list(VHostPath, rabbit_queue).
%% Not dirty_match_object since that would not be transactional when used in a
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl
index c52d329392..4e43104de2 100644
--- a/src/rabbit_amqqueue_process.erl
+++ b/src/rabbit_amqqueue_process.erl
@@ -266,11 +266,13 @@ init_with_backing_queue_state(Q = #amqqueue{exclusive_owner = Owner}, BQ, BQS,
State3.
terminate(shutdown = R, State = #q{backing_queue = BQ}) ->
+ rabbit_core_metrics:queue_deleted(qname(State)),
terminate_shutdown(fun (BQS) -> BQ:terminate(R, BQS) end, State);
terminate({shutdown, missing_owner} = Reason, State) ->
%% if the owner was missing then there will be no queue, so don't emit stats
terminate_shutdown(terminate_delete(false, Reason, State), State);
terminate({shutdown, _} = R, State = #q{backing_queue = BQ}) ->
+ rabbit_core_metrics:queue_deleted(qname(State)),
terminate_shutdown(fun (BQS) -> BQ:terminate(R, BQS) end, State);
terminate(normal, State) -> %% delete case
terminate_shutdown(terminate_delete(true, normal, State), State);
diff --git a/src/rabbit_core_metrics_gc.erl b/src/rabbit_core_metrics_gc.erl
index 3141fdc301..3321f2b5de 100644
--- a/src/rabbit_core_metrics_gc.erl
+++ b/src/rabbit_core_metrics_gc.erl
@@ -70,7 +70,7 @@ gc_channels() ->
ok.
gc_queues() ->
- Queues = rabbit_amqqueue:list_names(),
+ Queues = rabbit_amqqueue:list_local_names(),
GbSet = gb_sets:from_list(Queues),
gc_entity(queue_metrics, GbSet),
gc_entity(queue_coarse_metrics, GbSet),
diff --git a/src/rabbit_mirror_queue_sync.erl b/src/rabbit_mirror_queue_sync.erl
index 2994e8cbcf..fd64fd61b3 100644
--- a/src/rabbit_mirror_queue_sync.erl
+++ b/src/rabbit_mirror_queue_sync.erl
@@ -16,7 +16,7 @@
-module(rabbit_mirror_queue_sync).
--include("rabbit.hrl").
+-include_lib("rabbit_common/include/rabbit.hrl").
-export([master_prepare/4, master_go/8, slave/7, conserve_resources/3]).