Fix: Don't leave events enabled if they were saved in a disabled state
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 28 Nov 2014 16:07:17 +0000 (11:07 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 1 Dec 2014 02:40:14 +0000 (21:40 -0500)
Events are enabled by default on creation. The session configuration
loader must make sure to disable them after creation when restoring an
event that was saved in the "disabled" state.

Reported-by: Marcel Hamer <marcel.hamer@ericsson.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/common/config/config.c

index bfb2576f4d5bab954b37958d7c1d672bcbfd7c13..e5c1da13285af002f39e34d2715f036c9c40d375 100644 (file)
@@ -1632,6 +1632,24 @@ int process_event_node(xmlNodePtr event_node, struct lttng_handle *handle,
 
        ret = lttng_enable_event_with_exclusions(handle, &event, channel_name,
                        filter_expression, exclusion_count, exclusions);
+       if (ret) {
+               goto end;
+       }
+
+       if (!event.enabled) {
+               /*
+                * Note that we should use lttng_disable_event_ext() (2.6+) to
+                * eliminate the risk of clashing on events of the same
+                * name (with different event types and loglevels).
+                *
+                * Unfortunately, lttng_disable_event_ext() only performs a
+                * match on the name and event type and errors out if any other
+                * event attribute is not set to its default value.
+                *
+                * This will disable all events that match this name.
+                */
+               ret = lttng_disable_event(handle, event.name, channel_name);
+       }
 end:
        for (i = 0; i < exclusion_count; i++) {
                free(exclusions[i]);
This page took 0.027456 seconds and 4 git commands to generate.