diff options
| -rw-r--r-- | src/rabbit_amqqueue_process.erl | 17 | ||||
| -rw-r--r-- | src/rabbit_misc.erl | 11 |
2 files changed, 14 insertions, 14 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index 7ca00298c7..c64b4877e8 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -932,7 +932,7 @@ make_dead_letter_msg(DLX, Reason, case DlxRoutingKey of undefined -> {RoutingKeys, Headers1}; _ -> {[DlxRoutingKey], - rabbit_misc:remove_table_value(Headers1, <<"CC">>)} + lists:keydelete(<<"CC">>, 1, Headers1)} end, Content2 = rabbit_binary_generator:clear_encoded_content( @@ -1283,9 +1283,7 @@ handle_cast({deliver, Delivery = #delivery{sender = Sender, _ -> case already_been_here(Delivery, State) of false -> true; - Qs -> rabbit_log:warning( - "Message dropped. Dead-letter queues " ++ - "cycle detected: ~p~n", [Qs]), + Qs -> log_cycle_once(Qs), rabbit_misc:confirm_to_sender(Sender, [MsgSeqNo]), false @@ -1465,3 +1463,14 @@ handle_pre_hibernate(State = #q{backing_queue = BQ, {hibernate, stop_rate_timer(State1)}. format_message_queue(Opt, MQ) -> rabbit_misc:format_message_queue(Opt, MQ). + +log_cycle_once(Queues) -> + Key = {queue_cycle, Queues}, + case get(Key) of + true -> ok; + undefined -> rabbit_log:warning( + "Message dropped. Dead-letter queues cycle detected" ++ + ": ~p~nThis cycle will NOT be reported again.~n", + [Queues]), + put(Key, true) + end. diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index e4f8b6872b..afe136043c 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -23,7 +23,7 @@ protocol_error/3, protocol_error/4, protocol_error/1]). -export([not_found/1, assert_args_equivalence/4]). -export([dirty_read/1]). --export([table_lookup/2, set_table_value/4, remove_table_value/2]). +-export([table_lookup/2, set_table_value/4]). -export([r/3, r/2, r_arg/4, rs/1]). -export([enable_cover/0, report_cover/0]). -export([enable_cover/1, report_cover/1]). @@ -109,9 +109,6 @@ (rabbit_framing:amqp_table(), binary(), rabbit_framing:amqp_field_type(), rabbit_framing:amqp_value()) -> rabbit_framing:amqp_table()). --spec(remove_table_value/2 :: - (rabbit_framing:amqp_table(), binary()) -> rabbit_framing:amqp_table()). - -spec(r/2 :: (rabbit_types:vhost(), K) -> rabbit_types:r3(rabbit_types:vhost(), K, '_') when is_subtype(K, atom())). @@ -302,12 +299,6 @@ set_table_value(Table, Key, Type, Value) -> sort_field_table( lists:keystore(Key, 1, Table, {Key, Type, Value})). -remove_table_value(Table, Key) -> - case lists:keytake(Key, 1, Table) of - false -> Table; - {value, _, Table2} -> Table2 - end. - r(#resource{virtual_host = VHostPath}, Kind, Name) when is_binary(Name) -> #resource{virtual_host = VHostPath, kind = Kind, name = Name}; |
