diff options
| author | Michael Klishin <mklishin@pivotal.io> | 2019-04-23 23:21:33 +0300 |
|---|---|---|
| committer | Michael Klishin <mklishin@pivotal.io> | 2019-04-23 23:21:33 +0300 |
| commit | 733a1b130a225fdc34d45e9cfd54d62aae6cc53e (patch) | |
| tree | 9d54b7caf76393d7cf431f2506044adf27c7c855 | |
| parent | 9d898823c30ff0e56d97053764b2708a299c46eb (diff) | |
| download | rabbitmq-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]
| -rw-r--r-- | src/rabbit_channel.erl | 9 | ||||
| -rw-r--r-- | src/rabbit_core_metrics_gc.erl | 2 |
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) |
