Fix: mark rotation pending check timer is never marked as disabled
[lttng-tools.git] / src / bin / lttng-sessiond / timer.c
index 4bff7bd76cea0497c311f12b7026b0142761710c..d70d16710c91e7200f1a0c78f078e3d68a00c201 100644 (file)
@@ -248,6 +248,7 @@ int timer_session_rotation_pending_check_stop(struct ltt_session *session)
        int ret;
 
        assert(session);
+       assert(session->rotation_pending_check_timer_enabled);
 
        DBG("Disabling session rotation pending check timer on session %" PRIu64,
                        session->id);
@@ -387,11 +388,14 @@ void *timer_thread_func(void *data)
                        struct ltt_session *session =
                                        (struct ltt_session *) info.si_value.sival_ptr;
 
+                       session_lock_list();
+                       session_lock(session);
+                       /* Acquires a reference to the session. */
                        rotation_thread_enqueue_job(ctx->rotation_thread_job_queue,
                                        ROTATION_THREAD_JOB_TYPE_CHECK_PENDING_ROTATION,
                                        session);
-                       session_lock_list();
-                       session_put(session);
+                       /* Release the timer's reference to the session. */
+                       (void) timer_session_rotation_pending_check_stop(session);
                        session_unlock_list();
                } else if (signr == LTTNG_SESSIOND_SIG_SCHEDULED_ROTATION) {
                        rotation_thread_enqueue_job(ctx->rotation_thread_job_queue,
This page took 0.023493 seconds and 4 git commands to generate.