Fix: src.ctf.lttng-live: decode metadata even on _STATUS_CLOSED
[babeltrace.git] / src / plugins / ctf / lttng-live / data-stream.c
index b7083ab698569b20b794e4537aa452ba77fb9444..79f6c3fa97cd540cbebfd1f80323c23836ef38df 100644 (file)
@@ -138,7 +138,8 @@ static struct ctf_msg_iter_medium_ops medops = {
 
 BT_HIDDEN
 enum lttng_live_iterator_status lttng_live_lazy_msg_init(
-               struct lttng_live_session *session)
+               struct lttng_live_session *session,
+               bt_self_message_iterator *self_msg_iter)
 {
        struct lttng_live_component *lttng_live =
                session->lttng_live_msg_iter->lttng_live_comp;
@@ -150,6 +151,10 @@ enum lttng_live_iterator_status lttng_live_lazy_msg_init(
                return LTTNG_LIVE_ITERATOR_STATUS_OK;
        }
 
+       BT_COMP_LOGD("Lazily initializing self message iterator for live session: "
+               "session-id=%"PRIu64", self-msg-iter-addr=%p", session->id,
+               self_msg_iter);
+
        for (trace_idx = 0; trace_idx < session->traces->len; trace_idx++) {
                struct lttng_live_trace *trace =
                        g_ptr_array_index(session->traces, trace_idx);
@@ -167,9 +172,13 @@ enum lttng_live_iterator_status lttng_live_lazy_msg_init(
                        }
                        ctf_tc = ctf_metadata_decoder_borrow_ctf_trace_class(
                                trace->metadata->decoder);
+                       BT_COMP_LOGD("Creating CTF message iterator: "
+                               "session-id=%"PRIu64", ctf-tc-addr=%p, "
+                               "stream-iter-name=%s, self-msg-iter-addr=%p",
+                               session->id, ctf_tc, stream_iter->name->str, self_msg_iter);
                        stream_iter->msg_iter = ctf_msg_iter_create(ctf_tc,
                                lttng_live->max_query_size, medops, stream_iter,
-                               log_level, self_comp);
+                               log_level, self_comp, self_msg_iter);
                        if (!stream_iter->msg_iter) {
                                BT_COMP_LOGE_APPEND_CAUSE(self_comp,
                                        "Failed to create CTF message iterator");
@@ -195,7 +204,8 @@ BT_HIDDEN
 struct lttng_live_stream_iterator *lttng_live_stream_iterator_create(
                struct lttng_live_session *session,
                uint64_t ctf_trace_id,
-               uint64_t stream_id)
+               uint64_t stream_id,
+               bt_self_message_iterator *self_msg_iter)
 {
        struct lttng_live_stream_iterator *stream_iter;
        struct lttng_live_component *lttng_live;
@@ -240,7 +250,7 @@ struct lttng_live_stream_iterator *lttng_live_stream_iterator_create(
                BT_ASSERT(!stream_iter->msg_iter);
                stream_iter->msg_iter = ctf_msg_iter_create(ctf_tc,
                        lttng_live->max_query_size, medops, stream_iter,
-                       log_level, self_comp);
+                       log_level, self_comp, self_msg_iter);
                if (!stream_iter->msg_iter) {
                        BT_COMP_LOGE_APPEND_CAUSE(self_comp,
                                "Failed to create CTF message iterator");
@@ -307,10 +317,5 @@ void lttng_live_stream_iterator_destroy(
        /* Track the number of active stream iterator. */
        stream_iter->trace->session->lttng_live_msg_iter->active_stream_iter--;
 
-       /*
-        * Ensure we poke the trace metadata in the future, which is
-        * required to release the metadata reference on the trace.
-        */
-       stream_iter->trace->new_metadata_needed = true;
        g_free(stream_iter);
 }
This page took 0.025207 seconds and 4 git commands to generate.