summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-04-09 15:12:49 +0100
committerSimon MacMullen <simon@rabbitmq.com>2014-04-09 15:12:49 +0100
commitb053b9ad0d50423c59c0f10d8e2b42b2565b2854 (patch)
tree4da248e5af8b0c4e8af406fc852571e694d23a50
parent0f1145a49f3f6850c98e4b496e390c50496c70a7 (diff)
parentfa99b2988412da8628f05bcd632de1ee5562d500 (diff)
downloadrabbitmq-server-b053b9ad0d50423c59c0f10d8e2b42b2565b2854.tar.gz
Merge bug26100
-rw-r--r--src/rabbit_dead_letter.erl18
-rw-r--r--src/rabbit_mirror_queue_master.erl2
2 files changed, 12 insertions, 8 deletions
diff --git a/src/rabbit_dead_letter.erl b/src/rabbit_dead_letter.erl
index 6aeace79..ec32e687 100644
--- a/src/rabbit_dead_letter.erl
+++ b/src/rabbit_dead_letter.erl
@@ -25,7 +25,9 @@
-ifdef(use_specs).
--spec publish(rabbit_types:message(), atom(), rabbit_types:exchange(),
+-type reason() :: 'expired' | 'rejected' | 'maxlen'.
+
+-spec publish(rabbit_types:message(), reason(), rabbit_types:exchange(),
'undefined' | binary(), rabbit_amqqueue:name()) -> 'ok'.
-endif.
@@ -83,7 +85,10 @@ per_msg_ttl_header(#'P_basic'{expiration = Expiration}) ->
per_msg_ttl_header(_) ->
[].
-detect_cycles(expired, #basic_message{content = Content}, Queues) ->
+detect_cycles(rejected, _Msg, Queues) ->
+ {Queues, []};
+
+detect_cycles(_Reason, #basic_message{content = Content}, Queues) ->
#content{properties = #'P_basic'{headers = Headers}} =
rabbit_binary_parser:ensure_content_decoded(Content),
NoCycles = {Queues, []},
@@ -105,9 +110,7 @@ detect_cycles(expired, #basic_message{content = Content}, Queues) ->
_ ->
NoCycles
end
- end;
-detect_cycles(_Reason, _Msg, Queues) ->
- {Queues, []}.
+ end.
is_cycle(Queue, Deaths) ->
{Cycle, Rest} =
@@ -117,12 +120,13 @@ is_cycle(Queue, Deaths) ->
(_) ->
true
end, Deaths),
- %% Is there a cycle, and if so, is it entirely due to expiry?
+ %% Is there a cycle, and if so, is it "fully automatic", i.e. with
+ %% no reject in it?
case Rest of
[] -> false;
[H|_] -> lists:all(
fun ({table, D}) ->
- {longstr, <<"expired">>} =:=
+ {longstr, <<"rejected">>} =/=
rabbit_misc:table_lookup(D, <<"reason">>);
(_) ->
false
diff --git a/src/rabbit_mirror_queue_master.erl b/src/rabbit_mirror_queue_master.erl
index 1bac1b55..4bb923c4 100644
--- a/src/rabbit_mirror_queue_master.erl
+++ b/src/rabbit_mirror_queue_master.erl
@@ -140,7 +140,7 @@ sync_mirrors(HandleInfo, EmitStats,
backing_queue_state = BQS }) ->
Log = fun (Fmt, Params) ->
rabbit_mirror_queue_misc:log_info(
- QName, "Synchronising ~s: " ++ Fmt ++ "~n", Params)
+ QName, "Synchronising: " ++ Fmt ++ "~n", Params)
end,
Log("~p messages to synchronise", [BQ:len(BQS)]),
{ok, #amqqueue{slave_pids = SPids}} = rabbit_amqqueue:lookup(QName),