summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@rabbitmq.com>2014-06-19 16:56:02 +0400
committerMichael Klishin <michael@rabbitmq.com>2014-06-19 16:56:02 +0400
commitaa810e595f1448dc255733cc49bf92dc1b58f668 (patch)
tree14cd3826a808c382aa6c0423d9c47860816c395f
parent5a939f21b7e0f450cb40c7791de356fd756057e1 (diff)
downloadrabbitmq-server-aa810e595f1448dc255733cc49bf92dc1b58f668.tar.gz
Include channel into trace messages
-rw-r--r--src/rabbit_channel.erl9
-rw-r--r--src/rabbit_trace.erl18
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}]).
%%----------------------------------------------------------------------------