]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
Fix updating utils cache
authorBarbara Kaczorowska <bkjg@google.com>
Tue, 18 Aug 2020 18:42:39 +0000 (18:42 +0000)
committerBarbara Kaczorowska <bkjg@google.com>
Wed, 19 Aug 2020 07:42:09 +0000 (07:42 +0000)
src/daemon/utils_cache.c

index c37cd37052b83106cf8c0f9f8ea4a7a4945ab41c..181554b7527a00a4e4012325e3072ff35f597d88 100644 (file)
@@ -386,6 +386,7 @@ static int uc_update_metric(metric_t const *m) {
   switch (m->family->type) {
   case METRIC_TYPE_COUNTER: {
     counter_t diff = counter_diff(ce->values_raw.counter, m->value.counter);
+    printf("cdtime to double: %lf\n", (CDTIME_T_TO_DOUBLE(m->time - ce->last_time)));
     ce->values_gauge =
         ((double)diff) / (CDTIME_T_TO_DOUBLE(m->time - ce->last_time));
     ce->values_raw.counter = m->value.counter;
@@ -412,7 +413,7 @@ static int uc_update_metric(metric_t const *m) {
 
     distribution_destroy(ce->values_distribution);
     ce->values_distribution = ce->values_raw.distribution;
-    ce->values_raw.distribution = m->value.distribution;
+    ce->values_raw.distribution = distribution_clone(m->value.distribution);
     break;
   }
 #if 0
@@ -585,6 +586,7 @@ int uc_get_rate_by_name(const char *name, gauge_t *ret_values) {
         *ret_values = ce->values_gauge;
       } else { /* in case where metric is a distribution, we
                                      assume that the rate is the middle value */
+        pthread_mutex_unlock(&cache_lock);
         status = uc_get_percentile_by_name(name, ret_values, 50.0);
       }
     }