diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2014-04-09 15:12:49 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2014-04-09 15:12:49 +0100 |
commit | b053b9ad0d50423c59c0f10d8e2b42b2565b2854 (patch) | |
tree | 4da248e5af8b0c4e8af406fc852571e694d23a50 | |
parent | 0f1145a49f3f6850c98e4b496e390c50496c70a7 (diff) | |
parent | fa99b2988412da8628f05bcd632de1ee5562d500 (diff) | |
download | rabbitmq-server-b053b9ad0d50423c59c0f10d8e2b42b2565b2854.tar.gz |
Merge bug26100
-rw-r--r-- | src/rabbit_dead_letter.erl | 18 | ||||
-rw-r--r-- | src/rabbit_mirror_queue_master.erl | 2 |
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), |