diff options
author | Tim Watson <tim@rabbitmq.com> | 2014-02-05 12:07:49 +0000 |
---|---|---|
committer | Tim Watson <tim@rabbitmq.com> | 2014-02-05 12:07:49 +0000 |
commit | 5c3d6d8a3d6c010d8278d836d0eb391d07b9d8aa (patch) | |
tree | 5a3ae513f7da7c5c1656e6e5adcc4adbae109c63 | |
parent | 4f32e9f44c9187aa371a0b6408a8dadf579ebf23 (diff) | |
download | rabbitmq-server-5c3d6d8a3d6c010d8278d836d0eb391d07b9d8aa.tar.gz |
Simplify durable queue recovery and avoid a dict lookup on the results
-rw-r--r-- | src/rabbit_amqqueue.erl | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index 15928bf3..411ae502 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), |