summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@rabbitmq.com>2014-06-17 10:04:07 +0400
committerMichael Klishin <michael@rabbitmq.com>2014-06-17 10:04:07 +0400
commit5a939f21b7e0f450cb40c7791de356fd756057e1 (patch)
tree898ff42849a7c044eac014b81e3f47fe6ffd81f0
parent6452f057299ab69f7dd0257f79b7144979db38cc (diff)
downloadrabbitmq-server-5a939f21b7e0f450cb40c7791de356fd756057e1.tar.gz
Include connection name into trace message headers
-rw-r--r--src/rabbit_channel.erl10
-rw-r--r--src/rabbit_trace.erl18
2 files changed, 17 insertions, 11 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index 1b4ba7f1..ac989d62 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -670,7 +670,8 @@ handle_method(#'basic.publish'{exchange = ExchangeNameBin,
tx = Tx,
confirm_enabled = ConfirmEnabled,
trace_state = TraceState,
- user = #user{username = Username}}) ->
+ user = #user{username = Username},
+ conn_name = ConnName}) ->
check_msg_size(Content),
ExchangeName = rabbit_misc:r(VHostPath, exchange, ExchangeNameBin),
check_write_permitted(ExchangeName, State),
@@ -691,7 +692,7 @@ handle_method(#'basic.publish'{exchange = ExchangeNameBin,
end,
case rabbit_basic:message(ExchangeName, RoutingKey, DecodedContent) of
{ok, Message} ->
- rabbit_trace:tap_in(Message, Username, TraceState),
+ rabbit_trace:tap_in(Message, ConnName, Username, TraceState),
Delivery = rabbit_basic:delivery(
Mandatory, DoConfirm, Message, MsgSeqNo),
QNames = rabbit_exchange:route(Exchange, Delivery),
@@ -1367,7 +1368,8 @@ record_sent(ConsumerTag, AckRequired,
State = #ch{unacked_message_q = UAMQ,
next_tag = DeliveryTag,
trace_state = TraceState,
- user = #user{username = Username}}) ->
+ user = #user{username = Username},
+ conn_name = ConnName}) ->
?INCR_STATS([{queue_stats, QName, 1}], case {ConsumerTag, AckRequired} of
{none, true} -> get;
{none, false} -> get_no_ack;
@@ -1378,7 +1380,7 @@ record_sent(ConsumerTag, AckRequired,
true -> ?INCR_STATS([{queue_stats, QName, 1}], redeliver, State);
false -> ok
end,
- rabbit_trace:tap_out(Msg, Username, TraceState),
+ rabbit_trace:tap_out(Msg, ConnName, 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 afb149d0..8959eefb 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/3, tap_out/3, start/1, stop/1]).
+-export([init/1, enabled/1, tap_in/4, tap_out/4, start/1, stop/1]).
-include("rabbit.hrl").
-include("rabbit_framing.hrl").
@@ -32,8 +32,10 @@
-spec(init/1 :: (rabbit_types:vhost()) -> state()).
-spec(enabled/1 :: (rabbit_types:vhost()) -> boolean()).
--spec(tap_in/3 :: (rabbit_types:basic_message(), rabbit_types:username(), state()) -> 'ok').
--spec(tap_out/3 :: (rabbit_amqqueue:qmsg(), rabbit_types:username(), state()) -> 'ok').
+-spec(tap_in/4 :: (rabbit_types:basic_message(), string(),
+ rabbit_types:username(), state()) -> 'ok').
+-spec(tap_out/4 :: (rabbit_amqqueue:qmsg(), string(),
+ rabbit_types:username(), state()) -> 'ok').
-spec(start/1 :: (rabbit_types:vhost()) -> 'ok').
-spec(stop/1 :: (rabbit_types:vhost()) -> 'ok').
@@ -54,21 +56,23 @@ enabled(VHost) ->
{ok, VHosts} = application:get_env(rabbit, ?TRACE_VHOSTS),
lists:member(VHost, VHosts).
-tap_in(_Msg, _Username, none) -> ok;
+tap_in(_Msg, _ConnName, _Username, none) -> ok;
tap_in(Msg = #basic_message{exchange_name = #resource{name = XName,
virtual_host = VHost}},
- Username, TraceX) ->
+ ConnName, Username, TraceX) ->
trace(TraceX, Msg, <<"publish">>, XName,
[{<<"vhost">>, longstr, VHost},
+ {<<"connection">>, longstr, ConnName},
{<<"user">>, longstr, Username}]).
-tap_out(_Msg, _Username, none) -> ok;
+tap_out(_Msg, _ConnName, _Username, none) -> ok;
tap_out({#resource{name = QName, virtual_host = VHost}, _QPid, _QMsgId, Redelivered, Msg},
- Username, TraceX) ->
+ ConnName, 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},
{<<"user">>, longstr, Username}]).
%%----------------------------------------------------------------------------