Fix: destroy command: put consumer output after destroy notifier
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 20 Sep 2019 21:41:14 +0000 (17:41 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 20 Sep 2019 21:48:13 +0000 (17:48 -0400)
The destroy notifier needs to access the consumer output to format
the absolute path to the last chunk.

The observed problematic behavior can be observed by doing a
rotate and a destroy command in quick succession. Sometimes,
the resulting path printed by the destroy command is incomplete:

e.g. /archives/20190920T163616-0400-20190920T163618-0400-1

when we would expect:

/home/efficios/lttng-traces/auto-20190920-164425/archives/20190920T164437-0400-20190920T164439-0400-1

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/session.c

index 9072a2ecbead28a7b1c1e990d9d827f009e8af89..7fd4332ec12d3bb9f1c9643275c16d1769ecb0cc 100644 (file)
@@ -811,7 +811,6 @@ void session_release(struct urcu_ref *ref)
 
        DBG("Destroying session %s (id %" PRIu64 ")", session->name, session->id);
 
-       consumer_output_put(session->consumer);
        snapshot_destroy(&session->snapshot);
 
        pthread_mutex_destroy(&session->lock);
@@ -823,6 +822,7 @@ void session_release(struct urcu_ref *ref)
        }
        session_notify_destruction(session);
 
+       consumer_output_put(session->consumer);
        kernel_free_session(ksess);
        session->kernel_session = NULL;
        if (usess) {
This page took 0.026353 seconds and 4 git commands to generate.