summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <klishinm@vmware.com>2022-10-29 00:47:13 +0400
committerGitHub <noreply@github.com>2022-10-29 00:47:13 +0400
commit6d152dca78439c6dfeb1c053a040b9307affe651 (patch)
tree3a73868fd5c86f069172beb5070f9adebcb566f6
parentf59f81f21ebe516c918f4b3aadb7a781a780a83a (diff)
parent35eabce79a9afbdc75f56f77d51e2261e3b71b7f (diff)
downloadrabbitmq-server-git-6d152dca78439c6dfeb1c053a040b9307affe651.tar.gz
Merge pull request #6264 from rabbitmq/mergify/bp/v3.11.x/pr-6244
Correctly decrease global counters in rabbit_channel:terminate/2 (backport #6244)
-rw-r--r--deps/rabbit/src/rabbit_channel.erl9
-rw-r--r--deps/rabbit/test/queue_type_SUITE.erl9
2 files changed, 16 insertions, 2 deletions
diff --git a/deps/rabbit/src/rabbit_channel.erl b/deps/rabbit/src/rabbit_channel.erl
index fd25d00478..312af19413 100644
--- a/deps/rabbit/src/rabbit_channel.erl
+++ b/deps/rabbit/src/rabbit_channel.erl
@@ -877,6 +877,7 @@ handle_post_hibernate(State0) ->
terminate(_Reason,
State = #ch{cfg = #conf{user = #user{username = Username}},
+ consumer_mapping = CM,
queue_states = QueueCtxs}) ->
_ = rabbit_queue_type:close(QueueCtxs),
{_Res, _State1} = notify_queues(State),
@@ -885,6 +886,10 @@ terminate(_Reason,
fun() -> emit_stats(State) end),
[delete_stats(Tag) || {Tag, _} <- get()],
maybe_decrease_global_publishers(State),
+ _ = maps:map(
+ fun (_, _) ->
+ rabbit_global_counters:consumer_deleted(amqp091)
+ end, CM),
rabbit_core_metrics:channel_closed(self()),
rabbit_event:notify(channel_closed, [{pid, self()},
{user_who_performed_action, Username}]).
@@ -2903,7 +2908,7 @@ maybe_increase_global_publishers(State0) ->
rabbit_global_counters:publisher_created(amqp091),
State0#ch{publishing_mode = true}.
-maybe_decrease_global_publishers(#ch{publishing_mode = true}) ->
- ok;
maybe_decrease_global_publishers(#ch{publishing_mode = false}) ->
+ ok;
+maybe_decrease_global_publishers(#ch{publishing_mode = true}) ->
rabbit_global_counters:publisher_deleted(amqp091).
diff --git a/deps/rabbit/test/queue_type_SUITE.erl b/deps/rabbit/test/queue_type_SUITE.erl
index b757563f46..3143589356 100644
--- a/deps/rabbit/test/queue_type_SUITE.erl
+++ b/deps/rabbit/test/queue_type_SUITE.erl
@@ -187,6 +187,15 @@ smoke(Config) ->
messages_get_empty_total => 2,
messages_redelivered_total => 1
}, ProtocolQueueTypeCounters),
+
+
+ ok = rabbit_ct_client_helpers:close_channel(Ch),
+
+ ?assertMatch(
+ #{consumers := 0,
+ publishers := 0},
+ maps:get([{protocol, amqp091}], get_global_counters(Config))),
+
ok.
ack_after_queue_delete(Config) ->