summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_amqqueue.erl18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index 15928bf39d..411ae502db 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -232,21 +232,15 @@ find_durable_queues() ->
end).
recover_durable_queues(QueuesAndRecoveryTerms) ->
- {QsInit, QueuesDict} =
- lists:foldl(
- fun({Q, Terms}, {Qs, Dict}) ->
- Q1 = #amqqueue{ pid = Pid } = start_queue_process(node(), Q),
- {[{Pid, Terms}|Qs], dict:store(Pid, Q1, Dict)}
- end, {[], dict:new()}, QueuesAndRecoveryTerms),
-
{Results, Failures} =
- gen_server2:mcall([{Pid, {init, {self(), Terms}}} ||
- {Pid, Terms} <- QsInit]),
-
- %% TODO: get the queue name somehow, without doing *yet another* traversal..
+ gen_server2:mcall([begin
+ #amqqueue{ pid = Pid } =
+ start_queue_process(node(), Q),
+ {Pid, {init, {self(), Terms}}}
+ end || {Q, Terms} <- QueuesAndRecoveryTerms]),
[rabbit_log:error("Queue ~p failed to initialise: ~p~n",
[Pid, Error]) || {Pid, Error} <- Failures],
- [dict:fetch(Pid, QueuesDict) || {Pid, {new, _Q}} <- Results].
+ [Q || {_, {new, Q}} <- Results].
declare(QueueName, Durable, AutoDelete, Args, Owner) ->
ok = check_declare_arguments(QueueName, Args),