Fix: src.ctf.lttng-live: removing trace when not all streams are done
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Thu, 7 Nov 2019 20:35:08 +0000 (15:35 -0500)
committerFrancis Deslauriers <francis.deslauriers@efficios.com>
Fri, 15 Nov 2019 17:28:24 +0000 (12:28 -0500)
The following commit wrongfully added the removal of a live trace
object:
  commit c28512ab93b16501a8b0da494f0a03e5f0f22662
  Author: Francis Deslauriers <francis.deslauriers@efficios.com>
  Date:   Mon Oct 28 14:49:08 2019 -0400

      src.ctf.lttng-live: make `lttng_live_get_one_metadata_packet()` return status

The live trace objects should only be removed once all its stream
iterator have ended. We do that in next_stream_iterator_for_session()
function.

So, roll back this change but keep the switch statement so it's clearer
what are the possible outcomes of the preceding function call.

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Change-Id: I7ade43a256b731563eec2b1930724edbaeefd122
Reviewed-on: https://review.lttng.org/c/babeltrace/+/2350
Reviewed-by: Simon Marchi <simon.marchi@efficios.com>
src/plugins/ctf/lttng-live/lttng-live.c

index efaec623fab9bf4eb51feec70cbf3d1165bf0a01..82ebbff9b01f91afe8a15b2fc88c4c307fcb0d96 100644 (file)
@@ -493,22 +493,13 @@ enum lttng_live_iterator_status lttng_live_get_session(
 
                status = lttng_live_metadata_update(trace);
                switch (status) {
+               case LTTNG_LIVE_ITERATOR_STATUS_END:
                case LTTNG_LIVE_ITERATOR_STATUS_OK:
                        trace_idx++;
                        break;
-               case LTTNG_LIVE_ITERATOR_STATUS_END:
-                       /*
-                        * The trace has ended. Remove it of the array an
-                        * continue the iteration.
-                        * We can remove the trace safely when using the
-                        * g_ptr_array_remove_index_fast because it replaces
-                        * the element at trace_idx with the array's last
-                        * element. trace_idx is not incremented because of
-                        * that.
-                        */
-                       (void) g_ptr_array_remove_index_fast(session->traces,
-                               trace_idx);
-                       break;
+               case LTTNG_LIVE_ITERATOR_STATUS_CONTINUE:
+               case LTTNG_LIVE_ITERATOR_STATUS_AGAIN:
+                       goto end;
                default:
                        BT_COMP_LOGE_APPEND_CAUSE(self_comp,
                                "Error updating trace metadata: "
This page took 0.028323 seconds and 4 git commands to generate.