Bug #455
closedenable-consumer allows control and data streams to go to different IPs over tcp:
100%
Description
$ sudo -H lttng create session2 Session session2 created. Traces will be written in /root/lttng-traces/session2-20130219-163611 $ sudo -H lttng enable-event sched_switch -k kernel event sched_switch created in channel channel0 $ sudo -H lttng enable-consumer -D=tcp://131.132.32.77:5343 Data URL tcp://131.132.32.77:5343 set for kernel session session2. Data URL tcp://131.132.32.77:5343 set for UST session session2. $ sudo -H lttng enable-consumer -C=tcp://131.132.32.66:5342 Control URL tcp://131.132.32.66:5342 set for kernel session session2. Control URL tcp://131.132.32.66:5342 set for UST session session2. $ sudo -H lttng enable-consumer Consumer enabled successfully Consumer enabled successfully $ sudo -H lttng start Tracing started for session session2 $ sudo -H lttng stop Waiting for data availability Tracing stopped for session session2 $ sudo -H lttng list session2 Tracing session session2: [inactive] Trace path: net://131.132.32.66:5342/ [data: 5343] === Domain: Kernel === Error: No kernel consumer detected $ sudo -H lttng destroy Session session2 destroyed $ $ $ sudo -H lttng create session3 Session session3 created. Traces will be written in /root/lttng-traces/session3-20130219-164136 $ sudo -H lttng enable-event sched_switch -k Error: Event sched_switch: No kernel consumer detected (channel channel0, session session3) Warning: Some command(s) went wrong
The trace files were created on 131.132.32.66
, but they were empty. The two lttng-consumerd
daemons seem no longer responsive, hence the failure to create session3
. The tracing machine has to be rebooted.
A similar set of commands, but this time using the same IP for -C
and -D
, works just fine. The sequence -C -D
fails just like -D -C
:
$ sudo -H lttng create session4 Session session4 created. Traces will be written in /root/lttng-traces/session4-20130219-170423 $ sudo -H lttng enable-event -k sched_switch kernel event sched_switch created in channel channel0 $ sudo -H lttng enable-consumer -C tcp://131.132.32.66:5342 Control URL tcp://131.132.32.66:5342 set for kernel session session4. Control URL tcp://131.132.32.66:5342 set for UST session session4. $ sudo -H lttng enable-consumer -D tcp://131.132.32.77:5343 Data URL tcp://131.132.32.77:5343 set for kernel session session4. Data URL tcp://131.132.32.77:5343 set for UST session session4. $ sudo -H lttng enable-consumer Consumer enabled successfully Consumer enabled successfully $ sudo -H lttng list session4 Tracing session session4: [inactive] Trace path: net://131.132.32.66:5342/ [data: 5343] === Domain: Kernel === Channels: ------------- - channel0: [enabled] Attributes: overwrite mode: 0 subbufers size: 262144 number of subbufers: 4 switch timer interval: 0 read timer interval: 200 output: splice() Events: sched_switch (loglevel: TRACE_EMERG (0)) (type: tracepoint) [enabled] === Domain: UST global === Error: UST channel not found $ sudo -H lttng start Tracing started for session session4 $ sudo -H lttng list session4 Tracing session session4: [active] Trace path: net://131.132.32.66:5342/ [data: 5343] === Domain: Kernel === Error: No kernel consumer detected
You get the same result if you collapse the enable-consumer
lines into one:
$ sudo -H lttng enable-consumer -C tcp://131.132.32.66:5342 -D tcp://131.132.32.77:5343 -e
The "Error: UST channel not found"
is a distinct problem, which I may report separately (probably due to the fact that the command was sudo
ed and the userspace daemon is running as root).
Both target IPs have running lttng-relayd
daemons, so I suspect the consumer daemon is simply waiting on an acknowledgement of its data from a relayd
which is not getting a control stream (or something like that).
The problem is that although enable-consumer.c
correctly has a net: -C
override -D
, it doesn't do the same with tcp:
. What would be the point of control and data streams going to different IPs?
Updated by David Goulet over 11 years ago
- Status changed from New to Confirmed
- Assignee set to David Goulet
- Target version set to 2.2
Indeed, it's allowed because we planned ahead for relayd "hop" to proxy data on different network segment or machine. However, for now we don't have the support so a check should be added to refuse two different IPs indeed.
Updated by David Goulet over 11 years ago
- Status changed from Confirmed to Resolved
- % Done changed from 0 to 100
Applied in changeset 4f50c803f026f217d37588c46265b5c2fb9a1195.