]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
change update function to reset metric
authorSvetlana Shmidt <sshmidt@google.com>
Tue, 8 Sep 2020 11:37:44 +0000 (11:37 +0000)
committerSvetlana Shmidt <sshmidt@google.com>
Tue, 8 Sep 2020 11:37:44 +0000 (11:37 +0000)
src/daemon/utils_cache.c

index ae6dab51e8c9b3a58ecdf0d98fed98893d5ff26b..30bad79ae9b20403789b77dc35ca0895c1eea7ae 100644 (file)
@@ -361,13 +361,14 @@ static int uc_update_metric(metric_t const *m) {
   case METRIC_TYPE_DISTRIBUTION: {
     distribution_destroy(ce->distribution_increase);
     ce->distribution_increase = ce->values_raw.distribution;
-    int status =
+    status =
         distribution_sub(ce->distribution_increase, m->value.distribution);
     if (status == ERANGE) {
       distribution_destroy(ce->distribution_increase);
-      ce->distribution_increase = NULL;
+      ce->distribution_increase = distribution_clone(m->value.distribution);
       distribution_destroy(ce->start_value.distribution);
       ce->start_value.distribution = distribution_clone(m->value.distribution);
+      ce->start_time = m->time;
       status = 0;
     }
 
@@ -488,7 +489,7 @@ int uc_get_percentile_by_name(const char *name, gauge_t *ret_values,
             name);
       status = -1;
     } else {
-      if (ce->distribution_increase == NULL &&
+        if (ce->distribution_increase == NULL &&
           ce->values_raw.distribution !=
               NULL) { /* check if the cache entry is not the distribution */
         pthread_mutex_unlock(&cache_lock);