[lttng-dev] [PATCH v2 lttng-tools] Filter: Notify the user when a filter is already enabled on event(s)

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Thu Aug 23 22:17:21 EDT 2012


* Christian Babeux (christian.babeux at efficios.com) wrote:
> 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>

Acked-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>

Thanks!

Mathieu

> ---
>  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
> 

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list