diff options
author | Michael Klishin <michael@rabbitmq.com> | 2014-06-19 16:56:02 +0400 |
---|---|---|
committer | Michael Klishin <michael@rabbitmq.com> | 2014-06-19 16:56:02 +0400 |
commit | aa810e595f1448dc255733cc49bf92dc1b58f668 (patch) | |
tree | 14cd3826a808c382aa6c0423d9c47860816c395f | |
parent | 5a939f21b7e0f450cb40c7791de356fd756057e1 (diff) | |
download | rabbitmq-server-aa810e595f1448dc255733cc49bf92dc1b58f668.tar.gz |
Include channel into trace messages
-rw-r--r-- | src/rabbit_channel.erl | 9 | ||||
-rw-r--r-- | src/rabbit_trace.erl | 18 |
2 files changed, 17 insertions, 10 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl index ac989d62..a356f819 100644 --- a/src/rabbit_channel.erl +++ b/src/rabbit_channel.erl @@ -668,6 +668,7 @@ handle_method(#'basic.publish'{exchange = ExchangeNameBin, mandatory = Mandatory}, Content, State = #ch{virtual_host = VHostPath, tx = Tx, + channel = ChannelNum, confirm_enabled = ConfirmEnabled, trace_state = TraceState, user = #user{username = Username}, @@ -692,7 +693,8 @@ handle_method(#'basic.publish'{exchange = ExchangeNameBin, end, case rabbit_basic:message(ExchangeName, RoutingKey, DecodedContent) of {ok, Message} -> - rabbit_trace:tap_in(Message, ConnName, Username, TraceState), + rabbit_trace:tap_in(Message, ConnName, ChannelNum, + Username, TraceState), Delivery = rabbit_basic:delivery( Mandatory, DoConfirm, Message, MsgSeqNo), QNames = rabbit_exchange:route(Exchange, Delivery), @@ -1369,7 +1371,8 @@ record_sent(ConsumerTag, AckRequired, next_tag = DeliveryTag, trace_state = TraceState, user = #user{username = Username}, - conn_name = ConnName}) -> + conn_name = ConnName, + channel = ChannelNum}) -> ?INCR_STATS([{queue_stats, QName, 1}], case {ConsumerTag, AckRequired} of {none, true} -> get; {none, false} -> get_no_ack; @@ -1380,7 +1383,7 @@ record_sent(ConsumerTag, AckRequired, true -> ?INCR_STATS([{queue_stats, QName, 1}], redeliver, State); false -> ok end, - rabbit_trace:tap_out(Msg, ConnName, Username, TraceState), + rabbit_trace:tap_out(Msg, ConnName, ChannelNum, Username, TraceState), UAMQ1 = case AckRequired of true -> queue:in({DeliveryTag, ConsumerTag, {QPid, MsgId}}, UAMQ); diff --git a/src/rabbit_trace.erl b/src/rabbit_trace.erl index 8959eefb..c574562f 100644 --- a/src/rabbit_trace.erl +++ b/src/rabbit_trace.erl @@ -16,7 +16,7 @@ -module(rabbit_trace). --export([init/1, enabled/1, tap_in/4, tap_out/4, start/1, stop/1]). +-export([init/1, enabled/1, tap_in/5, tap_out/5, start/1, stop/1]). -include("rabbit.hrl"). -include("rabbit_framing.hrl"). @@ -32,9 +32,11 @@ -spec(init/1 :: (rabbit_types:vhost()) -> state()). -spec(enabled/1 :: (rabbit_types:vhost()) -> boolean()). --spec(tap_in/4 :: (rabbit_types:basic_message(), string(), +-spec(tap_in/5 :: (rabbit_types:basic_message(), string(), + rabbit_channel:channel_number(), rabbit_types:username(), state()) -> 'ok'). --spec(tap_out/4 :: (rabbit_amqqueue:qmsg(), string(), +-spec(tap_out/5 :: (rabbit_amqqueue:qmsg(), string(), + rabbit_channel:channel_number(), rabbit_types:username(), state()) -> 'ok'). -spec(start/1 :: (rabbit_types:vhost()) -> 'ok'). @@ -56,23 +58,25 @@ enabled(VHost) -> {ok, VHosts} = application:get_env(rabbit, ?TRACE_VHOSTS), lists:member(VHost, VHosts). -tap_in(_Msg, _ConnName, _Username, none) -> ok; +tap_in(_Msg, _ConnName, _ChannelNum, _Username, none) -> ok; tap_in(Msg = #basic_message{exchange_name = #resource{name = XName, virtual_host = VHost}}, - ConnName, Username, TraceX) -> + ConnName, ChannelNum, Username, TraceX) -> trace(TraceX, Msg, <<"publish">>, XName, [{<<"vhost">>, longstr, VHost}, {<<"connection">>, longstr, ConnName}, + {<<"channel">>, signedint, ChannelNum}, {<<"user">>, longstr, Username}]). -tap_out(_Msg, _ConnName, _Username, none) -> ok; +tap_out(_Msg, _ConnName, _ChannelNum, _Username, none) -> ok; tap_out({#resource{name = QName, virtual_host = VHost}, _QPid, _QMsgId, Redelivered, Msg}, - ConnName, Username, TraceX) -> + ConnName, ChannelNum, Username, TraceX) -> RedeliveredNum = case Redelivered of true -> 1; false -> 0 end, trace(TraceX, Msg, <<"deliver">>, QName, [{<<"redelivered">>, signedint, RedeliveredNum}, {<<"vhost">>, longstr, VHost}, {<<"connection">>, longstr, ConnName}, + {<<"channel">>, signedint, ChannelNum}, {<<"user">>, longstr, Username}]). %%---------------------------------------------------------------------------- |