condition: buffer usage: validation does not check for ratio and bytes threshold
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Thu, 4 Feb 2021 20:46:27 +0000 (15:46 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 3 Jun 2021 20:09:01 +0000 (16:09 -0400)
Buffer usage condition do not support having both ratio and bytes
threshold set.

Using `!usage->threshold_ratio.set && !usage->threshold_bytes.set` does
not error out for `threshold_ratio.set == 1` and
`usage->threshold_bytes.set == 1`

0 0 : 1
0 1 : 0
1 0 : 0
1 1 : 0

We want to check for a xnor (`usage->threshold_ratio.set == usage->threshold_bytes.set`)

0 0 : 1
0 1 : 0
1 0 : 0
1 1 : 1

We could also do 2 error check one for not set and one validating that
both are not set.

Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I5bfcf43bcaf9687ddf9fdebe5ace4f15bda28261

src/common/conditions/buffer-usage.c

index cc9e9cde89aade3eb0a5059ca3fe628457fd1260..a97f6d59f74b36b6d9eb9f1ef5c4994968659a00 100644 (file)
@@ -62,8 +62,8 @@ bool lttng_condition_buffer_usage_validate(
                ERR("Invalid buffer condition: a target channel name must be set.");
                goto end;
        }
-       if (!usage->threshold_ratio.set && !usage->threshold_bytes.set) {
-               ERR("Invalid buffer condition: a threshold must be set.");
+       if (usage->threshold_ratio.set == usage->threshold_bytes.set) {
+               ERR("Invalid buffer condition: a threshold must be set or both type cannot be used simultaneously.");
                goto end;
        }
        if (!usage->domain.set) {
This page took 0.026634 seconds and 4 git commands to generate.