diff options
author | dcorbacho <dparracorbacho@piotal.io> | 2020-11-18 12:11:51 +0000 |
---|---|---|
committer | dcorbacho <dparracorbacho@piotal.io> | 2020-11-18 12:11:51 +0000 |
commit | f7c127a9ef23fbf045b4c2d310b86a56d0755575 (patch) | |
tree | 2276a48635629dd017f5ace6c355c08d9483ceab | |
parent | 778e8dad5ceb9fec974d7ceea04081cc2e35872b (diff) | |
download | rabbitmq-server-git-rabbitmq-server-2497.tar.gz |
Ensure pg2 group is created only when links are created and removed with themrabbitmq-server-2497
The queue decorator is called even when no links are present, which caused the
pg2 group to be created. At the same time, deleting a link wasn't deleting
the queue group. Closes #2497
-rw-r--r-- | deps/rabbitmq_federation/src/rabbit_federation_queue_link.erl | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/deps/rabbitmq_federation/src/rabbit_federation_queue_link.erl b/deps/rabbitmq_federation/src/rabbit_federation_queue_link.erl index 97389cb8f6..b9a371c40a 100644 --- a/deps/rabbitmq_federation/src/rabbit_federation_queue_link.erl +++ b/deps/rabbitmq_federation/src/rabbit_federation_queue_link.erl @@ -49,8 +49,12 @@ all() -> pg2:get_members(pgname(rabbit_federation_queues)). q(QName) -> - pg2:create(pgname({rabbit_federation_queue, QName})), - pg2:get_members(pgname({rabbit_federation_queue, QName})). + case pg2:get_members(pgname({rabbit_federation_queue, QName})) of + {error, {no_such_group, _}} -> + []; + Members -> + Members + end. federation_up() -> proplists:is_defined(rabbitmq_federation, @@ -180,6 +184,7 @@ terminate(Reason, #not_started{upstream = Upstream, queue = Q}) when ?is_amqqueue(Q) -> QName = amqqueue:get_name(Q), rabbit_federation_link_util:log_terminate(Reason, Upstream, UParams, QName), + pg2:delete(pgname({rabbit_federation_queue, QName})), ok; terminate(Reason, #state{dconn = DConn, @@ -191,6 +196,7 @@ terminate(Reason, #state{dconn = DConn, rabbit_federation_link_util:ensure_connection_closed(DConn), rabbit_federation_link_util:ensure_connection_closed(Conn), rabbit_federation_link_util:log_terminate(Reason, Upstream, UParams, QName), + pg2:delete(pgname({rabbit_federation_queue, QName})), ok. code_change(_OldVsn, State, _Extra) -> |