Project

General

Profile

Actions

Bug #455

closed

enable-consumer allows control and data streams to go to different IPs over tcp:

Added by Daniel U. Thibault about 11 years ago. Updated about 11 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Target version:
Start date:
02/19/2013
Due date:
% Done:

100%

Estimated time:

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 sudoed 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?

Actions #1

Updated by David Goulet about 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.

Actions #2

Updated by David Goulet about 11 years ago

  • Status changed from Confirmed to Resolved
  • % Done changed from 0 to 100
Actions

Also available in: Atom PDF