[lttng-dev] [RFC] LTTng address API proposal v3

David Goulet dgoulet at efficios.com
Tue Aug 7 15:21:48 EDT 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512



Mathieu Desnoyers:
> * David Goulet (dgoulet at efficios.com) wrote: After a discussion
> with Mathieu and Yannick, here is some big changes.
> 
> I hope I did not forget anything important.
> 
> Cheers! David
> 
>> RFC - LTTng address API proposal
>> 
>> Author: David Goulet <david.goulet at efficios.com>
>> 
>> Contributors: * Mathieu Desnoyers
>> <mathieu.desnoyers at efficios.com> * Yannick Brosseau
>> <yannick.brosseau at polymtl.ca>
>> 
>> Version: - v0.1: 31/07/2012 * Initial proposal - v0.2:
>> 07/08/0212 * Remove lttng_create_session_addr * Describe URL
>> string format * Add set_consumer_url examples
>> 
>> Introduction -----------------
>> 
>> This document proposes the use of string URLs to the command line
>> interface and API which will deprecate a function and propose new
>> ones.
>> 
>> The purpose of this proposal is to support network streaming
>> using URL string format that you can find in proposal
>> doc/proposals/0003-network.consumer.txt, remove the lttng_uri
>> structure from the API and integrate the URL string to the API.
>> 
>> API -----------------
>> 
>> In order NOT to expose the new lttng_uri structure used to
>> identify trace location for lttng consumer, the public API will
>> only use string address where it will be converted in a lttng_uri
>> and sent to the session daemon.
>> 
>> [*] Create session:
>> 
>> With the introduction of the enable-consumer command used for
>> network streaming, the create session command has been modified
>> so the user could define a consumer location either on the
>> network or local with the command.
>> 
>> This does NOT change the current API call but rather simply
>> rename _path_ to _url_ and how it is used in the lttng-ctl
>> library.
>> 
>> Call changed from: --> lttng_create_session(const char *name,
>> const char *path);
>> 
>> To: --> lttng_create_session(const char *name, const char *url);
>> 
>> The _name_ argument is the session name and _url_ is a string
>> representing the URL specified by the user which is define like
>> so:
>> 
>> PROTO://[HOSTNAME|IP][:PORT][/PATH]
>> 
>> The proto supported at this stage are (6 means IPv6):
>> 
>> * net, net6, tcp, tcp6, file
>> 
>> If the proto is NOT recognized, the string is considered to be a
>> simple path on the local filesystem.
> 
> you could specify that it is a path relative to the process CWD
> (unless it starts with a /).

Done

> 
>> 
>> The PATH section is the destination path on the _remote_ host
>> where the trace data will be written with the <target_hostname>
>> append after.
> 
> The last sentence is not clear (after reading it 2-3 times, it's
> still not obvious what it explains).
> 
> Simply saying that the PATH is relative to a subdirectory
> "hostname", under the remote relayd "virtual" root directory, might
> be enough.
> 

Done

> 
>> The relayd defines a default location
> 
> ... for its virtual root directory...

Done

> 
>> if none is given using the -o, --output option. This default is
>> at:
>> 
>> * $USER/lttng-traces
>> 
>> For example, this URL results in writing the trace data in 
>> "$USER/lttng-traces/<target_hostname>/foo/bar".
>> 
>> * net://hostname/foo/bar
>> 
>> The PATH part can not be bigger than PATH_MAX (define in
>> limits.h) which is 4096 bytes at the time of this proposal.
>> Moreover, "../" is ignored and removed. For instance, using
>> "net://localhost/../../" will set the path to the default one.
>> 
>> The <net(6)> protocol has a special case where the user can input
>> two ports respectively being the control and data port.
>> 
>> * net://[HOSTNAME|IP][:CTRL_PORT][:DATA_PORT][/PATH]
>> 
>> If _url_ is not NULL, the lttng_create_session will use two API
>> calls.
> 
> If _url_ is not NULL, in addition to creating the session, the 
> lttng_create_session will use the two following API calls:

Done

Eazy pizy.
David

> 
>> 
>> 1) lttng_set_consumer_url(handle, url); 2)
>> lttng_enable_consumer(handle);
>> 
>> If _url_ is NULL, then NO consumer is created for this tracing
>> session and subsequent calls are needed to set up a consumer (i.e
>> lttng_enable_consumer and lttng_set_consumer_url).
>> 
>> [*] Consumer:
>> 
>> This call is simply renamed.
>> 
>> From: --> lttng_set_consumer_uri(...)
>> 
>> To: --> lttng_set_consumer_url(struct lttng_handle *handle, const
>> char *url);
>> 
>> For both functions (consumer and create), the _url_ will be
>> parsed into a lttng_uri in the liblttng-ctl and sent to the
>> session daemon.
>> 
>> Example:
>> 
>> lttng_set_consumer_url(handle, "net://42.42.42.2");
>> 
>> 
>> With all this, the lttng_uri data structure will NOT be exposed
>> to the public API and the user command line interface.
> 
> The rest looks good!
> 
> Thanks,
> 
> Mathieu
> 
> 
>> _______________________________________________ lttng-dev mailing
>> list lttng-dev at lists.lttng.org 
>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> 
> 
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCgAGBQJQIWrMAAoJEELoaioR9I020qwH/RcBwYZUvR3u5u7BcrG1wp7K
xgJ8HmYG9vTYSCMZv1dnMBu1aKCUwzQrwMTI/wi9qmM0oXHi7yk+XMQAbUlDmXoL
5vU4KtdejDyH3jPVMKsAfZRpKu+AghszsvqhUtPON6bM5jYXTWL4E8Wd29QhGS8O
xnkl6WUVN0Cb/+I1m3sIJEJFkOjEuKjaoRgZd/fO9f/ZLV90/jId8/nr3Yiar6Sa
mgIyl3mfEza8C/oeqBdEmGHSF2emAYEvHBZ9p2ewGfk0T57yVhMEoWGRG1o8pAQj
5BO6fJa+JJT62UAPnh3EFkveHLReoj0eVXVDJ2o2UNU20cTKiJR/TQWDD+CBKL0=
=pOdd
-----END PGP SIGNATURE-----



More information about the lttng-dev mailing list