[lttng-tools,v2] Fix: update apps on untrack only when session is active
Commit Message
This mimics what is done on the track side.
Fixes #1210
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
---
Used wrong issue number.
---
src/bin/lttng-sessiond/trace-ust.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
Comments
Merged in master and stable-2.11.
Thanks!
J?r?mie
On Mon, Nov 18, 2019 at 03:12:20PM -0500, Jonathan Rajotte wrote:
> This mimics what is done on the track side.
>
> Fixes #1210
>
> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
> ---
>
> Used wrong issue number.
>
> ---
> src/bin/lttng-sessiond/trace-ust.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/src/bin/lttng-sessiond/trace-ust.c b/src/bin/lttng-sessiond/trace-ust.c
> index 486b53d30..a6c0c04ad 100644
> --- a/src/bin/lttng-sessiond/trace-ust.c
> +++ b/src/bin/lttng-sessiond/trace-ust.c
> @@ -922,6 +922,7 @@ end:
> int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
> {
> int retval = LTTNG_OK;
> + bool should_update_apps = false;
>
> if (pid == -1) {
> /* Create empty tracker, replace old tracker. */
> @@ -938,7 +939,7 @@ int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
> fini_pid_tracker(&tmp_tracker);
>
> /* Remove session from all applications */
> - ust_app_global_update_all(session);
> + should_update_apps = true;
> } else {
> int ret;
> struct ust_app *app;
> @@ -957,9 +958,12 @@ int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
> /* Remove session from application. */
> app = ust_app_find_by_pid(pid);
> if (app) {
> - ust_app_global_update(session, app);
> + should_update_apps = true;
> }
> }
> + if (should_update_apps && session->active) {
> + ust_app_global_update_all(session);
> + }
> end:
> return retval;
> }
> --
> 2.17.1
>
@@ -922,6 +922,7 @@ end:
int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
{
int retval = LTTNG_OK;
+ bool should_update_apps = false;
if (pid == -1) {
/* Create empty tracker, replace old tracker. */
@@ -938,7 +939,7 @@ int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
fini_pid_tracker(&tmp_tracker);
/* Remove session from all applications */
- ust_app_global_update_all(session);
+ should_update_apps = true;
} else {
int ret;
struct ust_app *app;
@@ -957,9 +958,12 @@ int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
/* Remove session from application. */
app = ust_app_find_by_pid(pid);
if (app) {
- ust_app_global_update(session, app);
+ should_update_apps = true;
}
}
+ if (should_update_apps && session->active) {
+ ust_app_global_update_all(session);
+ }
end:
return retval;
}