diff options
author | Matthew Sackman <matthew@lshift.net> | 2009-12-19 16:33:02 +0000 |
---|---|---|
committer | Matthew Sackman <matthew@lshift.net> | 2009-12-19 16:33:02 +0000 |
commit | 3cb3ba0c6ce39eed96d807e96d546b05b0ee95b2 (patch) | |
tree | 05303250634ca38ac9c1107993407b3ea99bbd73 | |
parent | b89e90be604c0486055bc16bd74571e6c9ae4983 (diff) | |
parent | 87c0576a2474f55f37ae8aedc190f8c4510d46c1 (diff) | |
download | rabbitmq-server-3cb3ba0c6ce39eed96d807e96d546b05b0ee95b2.tar.gz |
merging v1_7 into default
-rw-r--r-- | src/rabbit_amqqueue.erl | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index 1a5e82d7..d728ef6a 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -163,15 +163,23 @@ internal_declare(Q = #amqqueue{name = QueueName}, WantDefaultBinding) -> case rabbit_misc:execute_mnesia_transaction( fun () -> case mnesia:wread({rabbit_queue, QueueName}) of - [] -> ok = store_queue(Q), - case WantDefaultBinding of - true -> add_default_binding(Q); - false -> ok - end, - Q; - [ExistingQ] -> ExistingQ + [] -> + case mnesia:read( + {rabbit_durable_queue, QueueName}) of + [] -> ok = store_queue(Q), + case WantDefaultBinding of + true -> add_default_binding(Q); + false -> ok + end, + Q; + [_] -> not_found %% existing Q on stopped node + end; + [ExistingQ] -> + ExistingQ end end) of + not_found -> exit(Q#amqqueue.pid, shutdown), + rabbit_misc:not_found(QueueName); Q -> Q; ExistingQ -> exit(Q#amqqueue.pid, shutdown), ExistingQ |