[lttng-dev] [PATCH v2 lttng-tools] Filter: Notify the user when a filter is already enabled on event(s)
Christian Babeux
christian.babeux at efficios.com
Thu Aug 23 22:05:12 EDT 2012
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
Signed-off-by: Christian Babeux <christian.babeux at efficios.com>
---
src/bin/lttng/commands/enable_events.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/src/bin/lttng/commands/enable_events.c b/src/bin/lttng/commands/enable_events.c
index a2c8a68..5a81fdb 100644
--- a/src/bin/lttng/commands/enable_events.c
+++ b/src/bin/lttng/commands/enable_events.c
@@ -384,7 +384,16 @@ 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 LTTCOMM_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 +563,16 @@ 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 LTTCOMM_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;
}
--
1.7.11.4
More information about the lttng-dev
mailing list