Fix: per-pid ust buffers flush race with application unregister
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 24 Feb 2016 00:41:40 +0000 (19:41 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 24 Feb 2016 16:37:26 +0000 (11:37 -0500)
If an application exits between the moment we create the ust app session
(shadow copy) and the moment we send channels to the application,
sending channels may fail. If the application unregisters between the
the end of ust app session creation and the destroy that follows (ust
app session lock is released in between), we may see is_sent being
false.

This assert was initially there in the early days of lttng-tools when
the application was responsible for doing the flush. Now that the flush
has been moved to the consumer daemon, we don't need this assertion
anymore.

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

index bbba4a604e4b5d120840496bb4c7f3a4d625a25d..e5c1495462a4ac18ed1754fb1e0f705b2ba5f6aa 100644 (file)
@@ -4432,7 +4432,6 @@ int ust_app_flush_app_session(struct ust_app *app,
                cds_lfht_for_each_entry(ua_sess->channels->ht, &iter.iter, ua_chan,
                                node.node) {
                        health_code_update();
-                       assert(ua_chan->is_sent);
                        ret = consumer_flush_channel(socket, ua_chan->key);
                        if (ret) {
                                ERR("Error flushing consumer channel");
This page took 0.047283 seconds and 4 git commands to generate.