]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
Add updating total_sum in distribution_sub function
authorBarbara Kaczorowska <bkjg@google.com>
Tue, 18 Aug 2020 23:34:37 +0000 (23:34 +0000)
committerBarbara Kaczorowska <bkjg@google.com>
Wed, 19 Aug 2020 07:43:20 +0000 (07:43 +0000)
src/daemon/distribution.c

index 52201b7e791781ec678d716c541d92cb8ec6a2b8..b446dad44c9300da0dee6c1559d317c6f2a0761a 100644 (file)
@@ -242,7 +242,7 @@ static double tree_get_counter(distribution_t *d, size_t node_index,
 }
 
 double distribution_percentile(distribution_t *dist, double percent) {
-  if (percent <= 0 || percent > 100 || dist == NULL) {
+  if (percent < 0 || percent > 100 || dist == NULL) {
     errno = EINVAL;
     return NAN;
   }
@@ -351,6 +351,7 @@ int distribution_sub(distribution_t *d1, distribution_t *d2) {
   pthread_mutex_lock(&d2->mutex);
 
   if (d1->total_sum < d2->total_sum) {
+    d1->total_sum = d2->total_sum - d1->total_sum;
     for (size_t i = 0; i < tree_size(d1->num_buckets); ++i) {
       if (d1->tree[i].maximum != d2->tree[i].maximum ||
           d1->tree[i].bucket_counter > d2->tree[i].bucket_counter) {
@@ -363,6 +364,7 @@ int distribution_sub(distribution_t *d1, distribution_t *d2) {
           d2->tree[i].bucket_counter - d1->tree[i].bucket_counter;
     }
   } else {
+    d1->total_sum -= d2->total_sum;
     for (size_t i = 0; i < tree_size(d1->num_buckets); ++i) {
       if (d1->tree[i].maximum != d2->tree[i].maximum ||
           d1->tree[i].bucket_counter < d2->tree[i].bucket_counter) {