summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2019-04-23 23:21:33 +0300
committerMichael Klishin <mklishin@pivotal.io>2019-04-23 23:21:33 +0300
commit733a1b130a225fdc34d45e9cfd54d62aae6cc53e (patch)
tree9d54b7caf76393d7cf431f2506044adf27c7c855 /src
parent9d898823c30ff0e56d97053764b2708a299c46eb (diff)
downloadrabbitmq-server-git-733a1b130a225fdc34d45e9cfd54d62aae6cc53e.tar.gz
Track messages that were not routed anywhere and also not published as mandatory
so they have to be dropped. Part of #1904. [#165548314]
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_channel.erl9
-rw-r--r--src/rabbit_core_metrics_gc.erl2
2 files changed, 9 insertions, 2 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index 59a8cce371..222ead65fc 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -2115,9 +2115,16 @@ deliver_to_queues({Delivery = #delivery{message = Message = #basic_message{
end,
State2#ch{queue_states = QueueStates}.
-process_routing_mandatory(true, [], Msg, State) ->
+process_routing_mandatory(_Mandatory = true,
+ _RoutedToQs = [],
+ Msg, State) ->
ok = basic_return(Msg, State, no_route),
ok;
+process_routing_mandatory(_Mandatory = false,
+ _RoutedToQs = [],
+ #basic_message{exchange_name = ExchangeName}, State) ->
+ ?INCR_STATS(exchange_stats, ExchangeName, 1, drop_unroutable, State),
+ ok;
process_routing_mandatory(_, _, _, _) ->
ok.
diff --git a/src/rabbit_core_metrics_gc.erl b/src/rabbit_core_metrics_gc.erl
index f4980aec7d..99ad8eef34 100644
--- a/src/rabbit_core_metrics_gc.erl
+++ b/src/rabbit_core_metrics_gc.erl
@@ -157,7 +157,7 @@ gc_process_and_entity(Table, GbSet) ->
ets:foldl(fun({{Pid, Id} = Key, _, _, _, _, _, _, _, _}, none)
when Table == channel_queue_metrics ->
gc_process_and_entity(Id, Pid, Table, Key, GbSet);
- ({{Pid, Id} = Key, _, _, _, _}, none)
+ ({{Pid, Id} = Key, _, _, _, _, _}, none)
when Table == channel_exchange_metrics ->
gc_process_and_entity(Id, Pid, Table, Key, GbSet);
({{Id, Pid, _} = Key, _, _, _, _, _, _}, none)