From a52f1f2ebb7b16014d1d5df8ad36285521be09ec Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Wed, 6 Dec 2023 17:20:21 +0000 Subject: [PATCH] src.ctf.lttng-live: make lttng_live_trace::trace_class a bt2::TraceClass::Shared Use the C++ wrapper to hold the reference to the trace class. Note that the existing comment said it is a weak reference, but the code shows otherwise. Change-Id: Ic486a65ab40953c5d6a3ddb7d057d2caa85cf1c0 Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/8415 Reviewed-by: Philippe Proulx Reviewed-on: https://review.lttng.org/c/babeltrace/+/12351 Tested-by: jenkins --- src/plugins/ctf/lttng-live/lttng-live.cpp | 2 -- src/plugins/ctf/lttng-live/lttng-live.hpp | 3 +-- src/plugins/ctf/lttng-live/metadata.cpp | 10 ++++------ 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/plugins/ctf/lttng-live/lttng-live.cpp b/src/plugins/ctf/lttng-live/lttng-live.cpp index 7e32c379..9bfc2f6f 100644 --- a/src/plugins/ctf/lttng-live/lttng-live.cpp +++ b/src/plugins/ctf/lttng-live/lttng-live.cpp @@ -94,7 +94,6 @@ static void lttng_live_destroy_trace(struct lttng_live_trace *trace) g_ptr_array_free(trace->stream_iterators, TRUE); BT_TRACE_PUT_REF_AND_RESET(trace->trace); - BT_TRACE_CLASS_PUT_REF_AND_RESET(trace->trace_class); lttng_live_metadata_fini(trace); delete trace; @@ -109,7 +108,6 @@ static struct lttng_live_trace *lttng_live_create_trace(struct lttng_live_sessio lttng_live_trace *trace = new lttng_live_trace {session->logger}; trace->session = session; trace->id = trace_id; - trace->trace_class = NULL; trace->trace = NULL; trace->stream_iterators = g_ptr_array_new_with_free_func((GDestroyNotify) lttng_live_stream_iterator_destroy); diff --git a/src/plugins/ctf/lttng-live/lttng-live.hpp b/src/plugins/ctf/lttng-live/lttng-live.hpp index 87c80e53..d6c01ad3 100644 --- a/src/plugins/ctf/lttng-live/lttng-live.hpp +++ b/src/plugins/ctf/lttng-live/lttng-live.hpp @@ -193,8 +193,7 @@ struct lttng_live_trace /* Owned by this. */ bt_trace *trace = nullptr; - /* Weak reference. */ - bt_trace_class *trace_class = nullptr; + bt2::TraceClass::Shared trace_class; struct lttng_live_metadata *metadata = nullptr; diff --git a/src/plugins/ctf/lttng-live/metadata.cpp b/src/plugins/ctf/lttng-live/metadata.cpp index a826c253..49bdf688 100644 --- a/src/plugins/ctf/lttng-live/metadata.cpp +++ b/src/plugins/ctf/lttng-live/metadata.cpp @@ -208,10 +208,8 @@ enum lttng_live_iterator_status lttng_live_metadata_update(struct lttng_live_tra struct ctf_trace_class *tc = ctf_metadata_decoder_borrow_ctf_trace_class(metadata->decoder.get()); - trace->trace_class = ctf_metadata_decoder_get_ir_trace_class(metadata->decoder.get()) - .release() - .libObjPtr(); - trace->trace = bt_trace_create(trace->trace_class); + trace->trace_class = ctf_metadata_decoder_get_ir_trace_class(metadata->decoder.get()); + trace->trace = bt_trace_create(trace->trace_class->libObjPtr()); if (!trace->trace) { BT_CPPLOGE_APPEND_CAUSE_SPEC(metadata->logger, "Failed to create bt_trace"); goto error; @@ -221,12 +219,12 @@ enum lttng_live_iterator_status lttng_live_metadata_update(struct lttng_live_tra "Failed to configure ctf trace class"); goto error; } - if (!stream_classes_all_have_default_clock_class(trace->trace_class, + if (!stream_classes_all_have_default_clock_class(trace->trace_class->libObjPtr(), metadata->logger)) { /* Error logged in function. */ goto error; } - trace->clock_class = borrow_any_clock_class(trace->trace_class); + trace->clock_class = borrow_any_clock_class(trace->trace_class->libObjPtr()); } /* The metadata was updated successfully. */ -- 2.34.1