[lttng-dev] [barectf] Support for empty payload ?
Jean-François Monestier
jean-francois.monestier at st.com
Tue Mar 29 09:31:14 UTC 2016
Hello
Indeed, upgrading barectf to v2.1.3 works like a charm !
Thank you very much
Le 3/25/2016 7:33 PM, Philippe Proulx a écrit :
> On Fri, Mar 25, 2016 at 10:57 AM, Jean-François Monestier
> <jean-francois.monestier at st.com> wrote:
>>
>> Le 3/25/2016 3:34 PM, Simon Marchi a écrit :
>>>
>>> On 2016-03-25 10:14, Jean-François Monestier wrote:
>>>>
>>>> Hello Tracers,
>>>>
>>>> Does anyone know whether barectf supports some sort of empty payloads
>>>> for events specified in the .yaml configuration file ?
>>>>
>>>> Something such as the well-known lttng_ust_statedump:start event :
>>>>
>>>> event {
>>>> name = "lttng_ust_statedump:start";
>>>> id = 0;
>>>> stream_id = 0;
>>>> loglevel = 13;
>>>> fields := struct {
>>>> };
>>>> };
>>>>
>>>> I can't figure out the yaml syntax for such an event, your help would
>>>> be welcome.
>
> Hi Jean-François,
>
> Thanks for writing.
>
> This was an arbitrary limitation, and I can't remember why it was like
> that.
>
> I write "was" because I just "fixed" it in v2.1.3. The only requirement
> now is that the event must contain at least one field in one of the
> following types:
>
> * The event header type of its parent stream
> * The event context type of its parent stream
> * Its context type
> * Its payload type
>
> In other words, the event cannot be completely empty. This would make it
> impossible for the reader to finish, since it would mean a stream of
> many 0-sized events (since there's no event ID, there's only one event in
> this stream). Babeltrace does not like this:
>
> [error] Invalid 0 byte event encountered.
> [error] Reading event failed.
>
> All the following event objects should work as expected in v2.1.3:
>
> 1. Empty event object:
>
> {}
>
> 2. Null payload type (sets the payload type to its default value,
> which is no payload type):
>
> payload-type: null
>
> 3. Structure with no fields (you must still explicitly align the type
> to at least 8-bit; this is a requirement for object types which is
> usually satisfied by the fact that one of the fields is
> byte-aligned):
>
> payload-type:
> class: struct
> min-align: 8
>
> I added such an event in the linux-fs-simple example, and it seems like
> everything is okay on the Babeltrace side afterwards:
>
> ...
> context_no_payload: { }, { a = 223, b = "ctx" }, { }
> ...
> no_context_no_payload: { }, { }
> ...
>
>>>>
>>>> I must confess I'm still stuck to barectf v2.0.2
>
> May I ask you why you're "stuck" at v2.0.2? How are you installing
> barectf?
>
> barectf v2.1 is fully backward-compatible with v2.0 (supports config
> files with version 2.0), so upgrading it is just a matter of running:
>
> pip3 install --upgrade barectf
>
>>>>
>>>>
>>>> Thanks in advance,
>>>
>>>
>>> Hi Jean-François,
>>>
>>> I don't believe barectf allows specifying empty payloads as of now.
>>> Trying to specify an empty fields dict, such as:
>>>
>>> simple_uint32:
>>> log-level: CRIT
>>> payload-type:
>>> class: struct
>>> fields: {}
>>>
>>> yields:
>>>
>>> Error:
>>> cannot create configuration from YAML file "config.yaml":
>>> metadata error:
>>> invalid event in stream "default":
>>> event payload type must have at least one field for event
>>> "simple_uint32"
>>>
>>> See:
>>> https://github.com/efficios/barectf/blob/master/barectf/config.py#L1119
>>>
>>> The maintainers will be able to confirm/infirm, and say whether it's in
>>> the plans to add support for that.
>
> Thanks for the fast support ;-).
>
>>>
>>> Simon
>>>
>>
>> Thank you, Simon, for your prompt response.
>>
>> I should have mentionned it, but my numerous, 'creative' attempts popped up a few error messages, such as
>>
>> Error:
>> cannot create configuration from YAML file:
>> cannot create stream "default":
>> cannot create event "start":
>> missing "payload-type" property in event object
>>
>> Error:
>> cannot create configuration from YAML file:
>> cannot create stream "default":
>> cannot create event "start":
>> cannot create event's payload type object:
>> type objects must be associative arrays
>>
>> Error:
>> cannot create configuration from YAML file:
>> metadata error:
>> invalid event in stream "default":
>> event payload type must have at least one field for event "start"
>>
>> Error:
>> cannot create configuration from YAML file:
>> cannot create stream "default":
>> cannot create event "start":
>> cannot create event's payload type object:
>> "fields" property of structure type object must be an associative array
>>
>>
>> Bye for now,
>> --
>> Jean-Francois Monestier
>> 041-6766
>>
>> _______________________________________________
>> lttng-dev mailing list
>> lttng-dev at lists.lttng.org
>> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Jean-Francois Monestier
041-6766
More information about the lttng-dev
mailing list