Skip to content

Commit

Permalink
Fix: flt-utils.trimmer: accept streams without packet support
Browse files Browse the repository at this point in the history
When the trimmer notices a new stream, it checks various properties to
make sure it is able to handle it.  If the stream's packet messages
don't have default clock snapshots, it returns an error, because that it
not supported right now.

However, this also has the unwanted effect of rejecting streams which
don't support packets.  Indeed, the
bt_stream_class_packets_have_beginning_default_clock_snapshot and
bt_stream_class_packets_have_end_default_clock_snapshot functions return
false in this case.

Streams without packet support are supported by the trimmer, there is
not reason to reject them.  Fix that by checking if the stream supports
packets before checking if the packet messages have default clock
snapshots.

This is covered by a test that is added by an following patch in this
series.

Change-Id: If4732e89680d8dc8f02cb9be56d3a0d39fed6afe
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/3105
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
  • Loading branch information
simark authored and jgalar committed Feb 19, 2020
1 parent 5cf4fb3 commit a26dd09
Showing 1 changed file with 39 additions and 37 deletions.
76 changes: 39 additions & 37 deletions src/plugins/utils/trimmer/trimmer.c
Original file line number Diff line number Diff line change
Expand Up @@ -1304,30 +1304,46 @@ create_stream_state_entry(
* the support for not having them is
* implemented.
*/
if (!bt_stream_class_packets_have_beginning_default_clock_snapshot(
sc)) {
BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
"Unsupported stream: packets have no beginning clock snapshot: "
"stream-addr=%p, "
"stream-id=%" PRIu64 ", "
"stream-name=\"%s\"",
stream, bt_stream_get_id(stream),
bt_stream_get_name(stream));
status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
goto end;
}
if (bt_stream_class_supports_packets(sc)) {
if (!bt_stream_class_packets_have_beginning_default_clock_snapshot(
sc)) {
BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
"Unsupported stream: packets have no beginning clock snapshot: "
"stream-addr=%p, "
"stream-id=%" PRIu64 ", "
"stream-name=\"%s\"",
stream, bt_stream_get_id(stream),
bt_stream_get_name(stream));
status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
goto end;
}

if (!bt_stream_class_packets_have_end_default_clock_snapshot(
sc)) {
BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
"Unsupported stream: packets have no end clock snapshot: "
"stream-addr=%p, "
"stream-id=%" PRIu64 ", "
"stream-name=\"%s\"",
stream, bt_stream_get_id(stream),
bt_stream_get_name(stream));
status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
goto end;
if (!bt_stream_class_packets_have_end_default_clock_snapshot(
sc)) {
BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
"Unsupported stream: packets have no end clock snapshot: "
"stream-addr=%p, "
"stream-id=%" PRIu64 ", "
"stream-name=\"%s\"",
stream, bt_stream_get_id(stream),
bt_stream_get_name(stream));
status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
goto end;
}

if (bt_stream_class_supports_discarded_packets(sc) &&
!bt_stream_class_discarded_packets_have_default_clock_snapshots(sc)) {
BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
"Unsupported stream: discarded packets "
"have no clock snapshots: "
"stream-addr=%p, "
"stream-id=%" PRIu64 ", "
"stream-name=\"%s\"",
stream, bt_stream_get_id(stream),
bt_stream_get_name(stream));
status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
goto end;
}
}

if (bt_stream_class_supports_discarded_events(sc) &&
Expand All @@ -1343,20 +1359,6 @@ create_stream_state_entry(
goto end;
}

if (bt_stream_class_supports_discarded_packets(sc) &&
!bt_stream_class_discarded_packets_have_default_clock_snapshots(sc)) {
BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
"Unsupported stream: discarded packets "
"have no clock snapshots: "
"stream-addr=%p, "
"stream-id=%" PRIu64 ", "
"stream-name=\"%s\"",
stream, bt_stream_get_id(stream),
bt_stream_get_name(stream));
status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
goto end;
}

sstate = g_new0(struct trimmer_iterator_stream_state, 1);
if (!sstate) {
status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_MEMORY_ERROR;
Expand Down

0 comments on commit a26dd09

Please sign in to comment.