Notify the user if a filter is already enabled
authorChristian Babeux <christian.babeux@efficios.com>
Fri, 24 Aug 2012 02:05:12 +0000 (22:05 -0400)
committerDavid Goulet <dgoulet@efficios.com>
Fri, 24 Aug 2012 18:22:32 +0000 (14:22 -0400)
When using the enable-event command in conjunction with the --filter
option, a user can specify a filter expression to refine the trace
output.

As stated in the lttng(1) man page, only the first activation of a
filter on an event will work. Subsequent activation of any filter
expression on the same event will fail.

e.g:

> lttng enable-event app:tp -s session -u --filter 'somefield > 42'

Case: invalid filter expression
> lttng enable-event app:tp -s session -u --filter 'invalid expression'
  Error: Error setting filter
  Warning: Some command(s) went wrong

> ...

Case: filter already enabled for event app:tp
> lttng enable-event app:tp -s session -u --filter 'someotherfield < 42'
  Error: Error setting filter
  Warning: Some command(s) went wrong

This commit differentiate the case where a filter was already set for
the specified event from the generic 'Error setting filter' error
message.

e.g:

> lttng enable-event app:tp -s session -u --filter 'somefield > 42'

Case: invalid filter expression
> lttng enable-event app:tp -s session -u --filter 'invalid expression'
  Error: Error setting filter
  Warning: Some command(s) went wrong

> ...

Case: filter already enabled for event app:tp
> lttng enable-event app:tp -s session -u --filter 'someotherfield < 42'
  Error: Filter on event app:tp is already enabled (channel 0, session session)
  Warning: Some command(s) went wrong

Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
src/bin/lttng/commands/enable_events.c

index 5a22c951355703d418c47fb108ad13e33895587e..90172e50a58d554c95b4cf502132584e2d59097f 100644 (file)
@@ -384,7 +384,17 @@ static int enable_events(char *session_name)
                        ret = lttng_set_event_filter(handle, ev.name, channel_name,
                                                opt_filter);
                        if (ret < 0) {
-                               ERR("Error setting filter");
+                               switch (-ret) {
+                               case LTTNG_ERR_FILTER_EXIST:
+                                       ERR("Filter on events is already enabled"
+                                                       " (channel %s, session %s)",
+                                               channel_name, session_name);
+                                       break;
+                               default:
+                                       ERR("Error setting filter");
+                                       break;
+                               }
+
                                ret = -1;
                                goto error;
                        }
@@ -554,7 +564,17 @@ static int enable_events(char *session_name)
                        ret = lttng_set_event_filter(handle, ev.name,
                                channel_name, opt_filter);
                        if (ret < 0) {
-                               ERR("Error setting filter");
+                               switch (-ret) {
+                               case LTTNG_ERR_FILTER_EXIST:
+                                       ERR("Filter on event %s is already enabled"
+                                                       " (channel %s, session %s)",
+                                               event_name, channel_name, session_name);
+                                       break;
+                               default:
+                                       ERR("Error setting filter");
+                                       break;
+                               }
+
                                ret = -1;
                                goto error;
                        }
This page took 0.038084 seconds and 4 git commands to generate.