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 | df11b4e85f31a8a39097e40f5c0f6046f0394d06 (patch) | |
| tree | 5a3ae513f7da7c5c1656e6e5adcc4adbae109c63 /src | |
| parent | eec669407e0c7ce029068d544291e3304b540d3f (diff) | |
| download | rabbitmq-server-git-df11b4e85f31a8a39097e40f5c0f6046f0394d06.tar.gz | |
Simplify durable queue recovery and avoid a dict lookup on the results
Diffstat (limited to 'src')
| -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 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), |
