From 21f6a44aa276c89662ff38acd13d84239493d6de Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Tue, 18 Feb 2020 12:04:51 -0500 Subject: [PATCH] Fix: flt-utils.trimmer: accept streams without packet support 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 Reviewed-on: https://review.lttng.org/c/babeltrace/+/3105 Tested-by: jenkins Reviewed-by: Philippe Proulx --- src/plugins/utils/trimmer/trimmer.c | 76 +++++++++++++++-------------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/src/plugins/utils/trimmer/trimmer.c b/src/plugins/utils/trimmer/trimmer.c index ce69f971..9a8bffde 100644 --- a/src/plugins/utils/trimmer/trimmer.c +++ b/src/plugins/utils/trimmer/trimmer.c @@ -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) && @@ -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; -- 2.34.1