Skip to content

Commit 7fea125

Browse files
committed
rabbit_amqqueue: Return empty list in consumers/1 when the queue is gone
This seems to happen in our CI quite frequently with `queue_parallel_SUITE`. In this testsuite, testcases are executed in parallel. At least the `basic_cancel` testcase queries all consumers of all queues: if an unrelated testcase finishes in parallel and thus deletes its queue(s), the call to `consumers_all/1` crashes.
1 parent 5dad9a1 commit 7fea125

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/rabbit_amqqueue.erl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1074,9 +1074,10 @@ consumers(Q) when ?amqqueue_is_classic(Q) ->
10741074
delegate:invoke(QPid, {gen_server2, call, [consumers, infinity]});
10751075
consumers(Q) when ?amqqueue_is_quorum(Q) ->
10761076
QPid = amqqueue:get_pid(Q),
1077-
{ok, {_, Result}, _} = ra:local_query(QPid,
1078-
fun rabbit_fifo:query_consumers/1),
1079-
maps:values(Result).
1077+
case ra:local_query(QPid, fun rabbit_fifo:query_consumers/1) of
1078+
{ok, {_, Result}, _} -> maps:values(Result);
1079+
_ -> []
1080+
end.
10801081

10811082
-spec consumer_info_keys() -> rabbit_types:info_keys().
10821083

0 commit comments

Comments
 (0)