summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-04-07 16:16:09 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-04-07 16:16:09 +0100
commit6f64a454329f97df7d839c9042b54c3b8b678043 (patch)
treed4bad920ce1c4fa69920729a927c68b3de675de0 /src
parent66b5fc3789f3a892d373278ecfff531c0c918874 (diff)
downloadrabbitmq-server-git-6f64a454329f97df7d839c9042b54c3b8b678043.tar.gz
Do loop detection earlier.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_log.erl33
1 files changed, 15 insertions, 18 deletions
diff --git a/src/rabbit_log.erl b/src/rabbit_log.erl
index ba3bd2344a..dfa61b15f0 100644
--- a/src/rabbit_log.erl
+++ b/src/rabbit_log.erl
@@ -86,11 +86,12 @@ tap_trace_in(Message = #basic_message{exchange_name = #resource{
virtual_host = VHostBin,
name = XNameBin}}) ->
check_trace(
+ XNameBin,
VHostBin,
fun (TraceExchangeBin) ->
{EncodedMetadata, Payload} = message_to_table(Message),
- maybe_inject(TraceExchangeBin, VHostBin, XNameBin,
- <<"publish">>, XNameBin, EncodedMetadata, Payload)
+ inject(TraceExchangeBin, VHostBin, <<"publish">>,
+ XNameBin, EncodedMetadata, Payload)
end).
tap_trace_out({#resource{name = QNameBin}, _QPid, _QMsgId, Redelivered,
@@ -100,6 +101,7 @@ tap_trace_out({#resource{name = QNameBin}, _QPid, _QMsgId, Redelivered,
DeliveryTag,
ConsumerTagOrNone) ->
check_trace(
+ XNameBin,
VHostBin,
fun (TraceExchangeBin) ->
RedeliveredNum = case Redelivered of true -> 1; false -> 0 end,
@@ -114,32 +116,27 @@ tap_trace_out({#resource{name = QNameBin}, _QPid, _QMsgId, Redelivered,
[{<<"consumer_tag">>, longstr, ConsumerTag}
| Fields0]
end,
- maybe_inject(TraceExchangeBin, VHostBin, XNameBin,
- <<"deliver">>, QNameBin, Fields, Payload)
+ inject(TraceExchangeBin, VHostBin, <<"deliver">>,
+ QNameBin, Fields, Payload)
end).
-check_trace(VHostBin, F) ->
+check_trace(XNameBin, VHostBin, F) ->
case catch case application:get_env(rabbit, {trace_exchange, VHostBin}) of
undefined -> ok;
+ {ok, XNameBin} -> ok;
{ok, TraceExchangeBin} -> F(TraceExchangeBin)
end of
{'EXIT', Reason} -> info("Trace tap died with reason ~p~n", [Reason]);
ok -> ok
end.
-maybe_inject(TraceExchangeBin, VHostBin, OriginalExchangeBin,
- RKPrefix, RKSuffix, Table, Payload) ->
- if
- TraceExchangeBin =:= OriginalExchangeBin ->
- ok;
- true ->
- rabbit_basic:publish(
- rabbit_misc:r(VHostBin, exchange, TraceExchangeBin),
- <<RKPrefix/binary, ".", RKSuffix/binary>>,
- #'P_basic'{headers = Table},
- Payload),
- ok
- end.
+inject(TraceExchangeBin, VHostBin, RKPrefix, RKSuffix, Table, Payload) ->
+ rabbit_basic:publish(
+ rabbit_misc:r(VHostBin, exchange, TraceExchangeBin),
+ <<RKPrefix/binary, ".", RKSuffix/binary>>,
+ #'P_basic'{headers = Table},
+ Payload),
+ ok.
message_to_table(#basic_message{exchange_name = #resource{name = XName},
routing_keys = RoutingKeys,