Flush UST buffers after stop and wait quiescent
[lttng-tools.git] / lttng-sessiond / ust-app.c
index 616a7ae2f50c04ebf1365bc20d218d3ec28b256e..73dc770c9391f3fac295d6e16b58fcfefa195ac9 100644 (file)
@@ -163,6 +163,9 @@ void delete_ust_app_session(int sock, struct ust_app_session *ua_sess)
        ret = hashtable_destroy(ua_sess->channels);
        assert(!ret);
 
+       if (ua_sess->handle != -1) {
+               ustctl_release_handle(sock, ua_sess->handle);
+       }
        free(ua_sess);
 }
 
@@ -1941,13 +1944,6 @@ int ust_app_stop_trace(struct ltt_ust_session *usess, struct ust_app *app)
                goto error_rcu_unlock;
        }
 
-       /* Flush all buffers before stopping */
-       ret = ustctl_sock_flush_buffer(app->key.sock, ua_sess->metadata->obj);
-       if (ret < 0) {
-               ERR("UST app PID %d metadata flush failed", app->key.pid);
-               ERR("Ended with ret %d", ret);
-       }
-
        cds_lfht_for_each_entry(ua_sess->channels, &iter, ua_chan, node) {
                ret = ustctl_sock_flush_buffer(app->key.sock, ua_chan->obj);
                if (ret < 0) {
@@ -1971,6 +1967,13 @@ int ust_app_stop_trace(struct ltt_ust_session *usess, struct ust_app *app)
        /* Quiescent wait after stopping trace */
        ustctl_wait_quiescent(app->key.sock);
 
+       /* Flush all buffers before stopping */
+       ret = ustctl_sock_flush_buffer(app->key.sock, ua_sess->metadata->obj);
+       if (ret < 0) {
+               ERR("UST app PID %d metadata flush failed", app->key.pid);
+               ERR("Ended with ret %d", ret);
+       }
+
        return 0;
 
 error_rcu_unlock:
This page took 0.023329 seconds and 4 git commands to generate.