summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-09-09 12:23:02 +0100
committerSimon MacMullen <simon@rabbitmq.com>2013-09-09 12:23:02 +0100
commit8451cd86fecd18a2a16ab220b0026bfd2d60fbea (patch)
treee95eb003b19853a7ea218b7a1a2972475495152d
parent147ba4837bf72265044932a0cc785e53ce68608d (diff)
parent9a75e3de3ee409941a2dabf098aa56b334849419 (diff)
downloadrabbitmq-server-8451cd86fecd18a2a16ab220b0026bfd2d60fbea.tar.gz
Merge in default
-rw-r--r--src/rabbit_channel.erl3
-rw-r--r--src/rabbit_mirror_queue_misc.erl14
2 files changed, 11 insertions, 6 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index c3780581..d59992cc 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -962,7 +962,7 @@ handle_method(#'exchange.unbind'{destination = DestinationNameBin,
handle_method(#'queue.declare'{queue = QueueNameBin,
passive = false,
- durable = Durable,
+ durable = DurableDeclare,
exclusive = ExclusiveDeclare,
auto_delete = AutoDelete,
nowait = NoWait,
@@ -974,6 +974,7 @@ handle_method(#'queue.declare'{queue = QueueNameBin,
true -> ConnPid;
false -> none
end,
+ Durable = DurableDeclare andalso not ExclusiveDeclare,
ActualNameBin = case QueueNameBin of
<<>> -> rabbit_guid:binary(rabbit_guid:gen_secure(),
"amq.gen");
diff --git a/src/rabbit_mirror_queue_misc.erl b/src/rabbit_mirror_queue_misc.erl
index eded0411..a5a1d922 100644
--- a/src/rabbit_mirror_queue_misc.erl
+++ b/src/rabbit_mirror_queue_misc.erl
@@ -237,16 +237,20 @@ suggested_queue_nodes(Q) ->
%% This variant exists so we can pull a call to
%% rabbit_mnesia:cluster_nodes(running) out of a loop or
%% transaction or both.
-suggested_queue_nodes(Q, All) ->
+suggested_queue_nodes(Q = #amqqueue{exclusive_owner = Owner}, All) ->
{MNode0, SNodes, SSNodes} = actual_queue_nodes(Q),
MNode = case MNode0 of
none -> node();
_ -> MNode0
end,
- Params = policy(<<"ha-params">>, Q),
- case module(Q) of
- {ok, M} -> M:suggested_queue_nodes(Params, MNode, SNodes, SSNodes, All);
- _ -> {MNode, []}
+ case Owner of
+ none -> Params = policy(<<"ha-params">>, Q),
+ case module(Q) of
+ {ok, M} -> M:suggested_queue_nodes(
+ Params, MNode, SNodes, SSNodes, All);
+ _ -> {MNode, []}
+ end;
+ _ -> {MNode, []}
end.
policy(Policy, Q) ->