summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@novemberain.com>2017-03-01 22:27:02 +0300
committerGitHub <noreply@github.com>2017-03-01 22:27:02 +0300
commit393626cc39edb6797776212dc1b64262aebacf65 (patch)
tree91459749f86069220cec2f07ead9d654e302344d
parente746abffca500d4ed5dc06e5cfb00a8a11a012a1 (diff)
parentd62f57878d397fc0cbcb9de758c661b524f810dc (diff)
downloadrabbitmq-server-git-393626cc39edb6797776212dc1b64262aebacf65.tar.gz
Merge pull request #1130 from rabbitmq/rabbitmq-management-353
Update metrics gc to support gc marker
-rw-r--r--src/rabbit_core_metrics_gc.erl10
-rw-r--r--test/rabbit_core_metrics_gc_SUITE.erl1
2 files changed, 7 insertions, 4 deletions
diff --git a/src/rabbit_core_metrics_gc.erl b/src/rabbit_core_metrics_gc.erl
index e7f848bbc3..e0d7781796 100644
--- a/src/rabbit_core_metrics_gc.erl
+++ b/src/rabbit_core_metrics_gc.erl
@@ -96,6 +96,8 @@ gc_gen_server2() ->
gc_process(Table) ->
ets:foldl(fun({Pid = Key, _}, none) ->
gc_process(Pid, Table, Key);
+ ({Pid = Key, _, _, _, _}, none) ->
+ gc_process(Pid, Table, Key);
({Pid = Key, _, _, _}, none) ->
gc_process(Pid, Table, Key)
end, none, Table).
@@ -115,6 +117,8 @@ gc_entity(Table, GbSet) ->
gc_entity(Id, Table, Key, GbSet);
({Id = Key, _}, none) ->
gc_entity(Id, Table, Key, GbSet);
+ ({Id = Key, _, _}, none) ->
+ gc_entity(Id, Table, Key, GbSet);
({Id = Key, _, _, _, _}, none) ->
gc_entity(Id, Table, Key, GbSet)
end, none, Table).
@@ -130,11 +134,11 @@ gc_entity(Id, Table, Key, GbSet) ->
end.
gc_process_and_entity(Table, GbSet) ->
- ets:foldl(fun({{Pid, Id} = Key, _, _, _, _, _, _}, none)
+ ets:foldl(fun({{Pid, Id} = Key, _, _, _, _, _, _, _}, none)
when Table == channel_queue_metrics ->
gc_entity(Id, Table, Key, GbSet),
gc_process(Pid, Table, Key);
- ({{Pid, Id} = Key, _, _, _}, none)
+ ({{Pid, Id} = Key, _, _, _, _}, none)
when Table == channel_exchange_metrics ->
gc_entity(Id, Table, Key, GbSet),
gc_process(Pid, Table, Key);
@@ -157,7 +161,7 @@ gc_process_and_entity(Id, Pid, Table, Key, GbSet) ->
end.
gc_process_and_entities(Table, QueueGbSet, ExchangeGbSet) ->
- ets:foldl(fun({{Pid, {Q, X}} = Key, _}, none) ->
+ ets:foldl(fun({{Pid, {Q, X}} = Key, _, _}, none) ->
gc_process(Pid, Table, Key),
gc_entity(Q, Table, Key, QueueGbSet),
gc_entity(X, Table, Key, ExchangeGbSet)
diff --git a/test/rabbit_core_metrics_gc_SUITE.erl b/test/rabbit_core_metrics_gc_SUITE.erl
index b7311463d5..c3997f31e2 100644
--- a/test/rabbit_core_metrics_gc_SUITE.erl
+++ b/test/rabbit_core_metrics_gc_SUITE.erl
@@ -106,7 +106,6 @@ queue_metrics(Config) ->
[queue_metrics, Q]),
[_] = rabbit_ct_broker_helpers:rpc(Config, A, ets, lookup,
[queue_coarse_metrics, Q]),
-
%% Trigger gc. When the gen_server:call returns, the gc has already finished.
rabbit_ct_broker_helpers:rpc(Config, A, erlang, send, [rabbit_core_metrics_gc, start_gc]),
rabbit_ct_broker_helpers:rpc(Config, A, gen_server, call, [rabbit_core_metrics_gc, test]),