Fix: ust metadata: resample clock on regenerate metadata
[lttng-tools.git] / src / bin / lttng-sessiond / ust-registry-session.cpp
index 6e21cee00c6d314419761d6a494d7b41c2084bec..eced786e0446836f54ffbadf47a0607f5eb04775 100644 (file)
@@ -125,7 +125,7 @@ void destroy_channel(lsu::registry_channel *chan, bool notify) noexcept
                DIAGNOSTIC_PUSH
                DIAGNOSTIC_IGNORE_INVALID_OFFSETOF
                cds_lfht_for_each_entry(
-                               chan->_events->ht, &iter.iter, event, _node.node) {
+                               chan->_events->ht, &iter.iter, event, _node) {
                        /* Delete the node from the ht and free it. */
                        ust_registry_channel_destroy_event(chan, event);
                }
@@ -246,6 +246,7 @@ lsu::registry_session::registry_session(const struct lst::abi& in_abi,
        _gid{egid},
        _app_tracer_version{.major = major, .minor = minor},
        _tracing_id{tracing_id},
+       _clock{lttng::make_unique<lsu::clock_class>()},
        _metadata_generating_visitor{lttng::make_unique<ls::tsdl::trace_class_visitor>(abi,
                        [this](const std::string& fragment) {
                                _append_metadata_fragment(fragment);
@@ -487,7 +488,7 @@ void lsu::registry_session::_visit_environment(
 void lsu::registry_session::_accept_on_clock_classes(lst::trace_class_visitor& visitor) const
 {
        ASSERT_LOCKED(_lock);
-       _clock.accept(visitor);
+       _clock->accept(visitor);
 }
 
 void lsu::registry_session::_accept_on_stream_classes(lst::trace_class_visitor& visitor) const
@@ -613,6 +614,9 @@ void lsu::registry_session::regenerate_metadata()
 {
        lttng::pthread::lock_guard registry_lock(_lock);
 
+       /* Resample the clock */
+       _clock = lttng::make_unique<lsu::clock_class>();
+
        _metadata_version++;
        _reset_metadata();
        _generate_metadata();
@@ -762,4 +766,4 @@ void lsu::registry_session::create_or_find_enum(
        DBG("UST registry reply with enum %s with id %" PRIu64 " in sess_objd: %u",
                        enum_name, reg_enum->id, session_objd);
        *enum_id = reg_enum->id;
-}
\ No newline at end of file
+}
This page took 0.02444 seconds and 4 git commands to generate.