summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_amqqueue_process.erl17
-rw-r--r--src/rabbit_misc.erl11
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};