diff options
author | Michael Klishin <klishinm@vmware.com> | 2022-10-29 00:47:13 +0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-29 00:47:13 +0400 |
commit | 6d152dca78439c6dfeb1c053a040b9307affe651 (patch) | |
tree | 3a73868fd5c86f069172beb5070f9adebcb566f6 | |
parent | f59f81f21ebe516c918f4b3aadb7a781a780a83a (diff) | |
parent | 35eabce79a9afbdc75f56f77d51e2261e3b71b7f (diff) | |
download | rabbitmq-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.erl | 9 | ||||
-rw-r--r-- | deps/rabbit/test/queue_type_SUITE.erl | 9 |
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) -> |