diff options
| -rw-r--r-- | src/rabbit_channel.erl | 5 | ||||
| -rw-r--r-- | src/rabbit_trace.erl | 33 |
2 files changed, 17 insertions, 21 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl index e5e61e56b9..991b0b065c 100644 --- a/src/rabbit_channel.erl +++ b/src/rabbit_channel.erl @@ -22,9 +22,8 @@ -export([start_link/10, do/2, do/3, flush/1, shutdown/1]). -export([send_command/2, deliver/4, flushed/2, confirm/2]). --export([list/0, info_keys/0, info/1, info/2, info_all/0, info_all/1, - refresh_config_all/0]). --export([emit_stats/1, ready_for_close/1]). +-export([list/0, info_keys/0, info/1, info/2, info_all/0, info_all/1]). +-export([refresh_config_all/0, emit_stats/1, ready_for_close/1]). -export([init/1, terminate/2, code_change/3, handle_call/3, handle_cast/2, handle_info/2, handle_pre_hibernate/1, prioritise_call/3, diff --git a/src/rabbit_trace.erl b/src/rabbit_trace.erl index 6f21e575a8..ed1ac05f42 100644 --- a/src/rabbit_trace.erl +++ b/src/rabbit_trace.erl @@ -41,8 +41,7 @@ init(VHost) -> tap_trace_in(Msg, TraceX) -> maybe_trace(Msg, TraceX, fun () -> - XName = xname(Msg), - {<<"publish.", XName/binary>>, msg_to_table(Msg)} + {<<"publish.", (xname(Msg))/binary>>, msg_to_table(Msg)} end). tap_trace_out({#resource{name = QName}, _QPid, _QMsgId, Redelivered, Msg}, @@ -57,15 +56,20 @@ tap_trace_out({#resource{name = QName}, _QPid, _QMsgId, Redelivered, Msg}, xname(#basic_message{exchange_name = #resource{name = XName}}) -> XName. vhost(#basic_message{exchange_name = #resource{virtual_host = VHost}}) -> VHost. -maybe_trace(Msg, none, Fun) -> ok; -maybe_trace(Msg, TraceX, Fun) -> - X = xname(Msg), - case TraceX of - X -> ok; - _ -> case catch trace(TraceX, Msg, Fun) of - {'EXIT', R} -> rabbit_log:info("Trace died: ~p~n", [R]); - ok -> ok - end +maybe_trace(_Msg, none, _Fun) -> + ok; +maybe_trace(Msg0, TraceX, Fun) -> + case xname(Msg0) of + TraceX -> ok; + _ -> Msg = ensure_content_decoded(Msg0), + X = rabbit_misc:r(vhost(Msg), exchange, TraceX), + {RKey, Headers} = Fun(), + P = #'P_basic'{headers = Headers}, + case catch rabbit_basic:publish(X, RKey, P, payload(Msg)) of + {'EXIT', R} -> rabbit_log:info( + "Trace publish died: ~p~n", [R]); + {ok, _, _} -> ok + end end. trace_exchange(VHost) -> @@ -74,13 +78,6 @@ trace_exchange(VHost) -> {ok, Xs} -> proplists:get_value(VHost, Xs, none) end. -trace(TraceX, Msg0, Fun) -> - Msg = ensure_content_decoded(Msg0), - {RKey, Headers} = Fun(), - rabbit_basic:publish(rabbit_misc:r(vhost(Msg), exchange, TraceX), - RKey, #'P_basic'{headers = Headers}, payload(Msg)), - ok. - msg_to_table(#basic_message{exchange_name = #resource{name = XName}, routing_keys = RoutingKeys, content = #content{properties = Props}}) -> |
