Skip to content

Commit ab02485

Browse files
committed
Stop quorum queues in rabbit_amqqueue:stop/1
[#154472158]
1 parent 5df8283 commit ab02485

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

src/rabbit_amqqueue.erl

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,14 @@ filter_per_type(Queues) ->
263263
end, {[], []}, Queues).
264264

265265
stop(VHost) ->
266-
%% TODO stop quorum queues on that vhost. Should we have a rabbit_nodes_sup per vhost?
266+
%% Classic queues
267267
ok = rabbit_amqqueue_sup_sup:stop_for_vhost(VHost),
268268
{ok, BQ} = application:get_env(rabbit, backing_queue_module),
269-
ok = BQ:stop(VHost).
269+
ok = BQ:stop(VHost),
270+
%% Quorum queues
271+
Quorum = find_quorum_queues(VHost),
272+
[ra:stop_node(Pid) || #amqqueue{pid = Pid} <- Quorum],
273+
ok.
270274

271275
start(Qs) ->
272276
{Classic, Quorum} = filter_per_type(Qs),
@@ -321,6 +325,18 @@ find_durable_queues() ->
321325
orelse not erlang:is_process_alive(Pid))]))
322326
end).
323327

328+
find_quorum_queues(VHost) ->
329+
Node = node(),
330+
mnesia:async_dirty(
331+
fun () ->
332+
qlc:e(qlc:q([Q || Q = #amqqueue{name = Name,
333+
vhost = VH,
334+
pid = Pid}
335+
<- mnesia:table(rabbit_durable_queue),
336+
VH =:= VHost,
337+
qnode(Pid) == Node]))
338+
end).
339+
324340
recover_durable_queues(QueuesAndRecoveryTerms) ->
325341
{Results, Failures} =
326342
gen_server2:mcall(

0 commit comments

Comments
 (0)