Code

Merge remote-tracking branch 'github/pr/2040'
[collectd.git] / src / daemon / utils_match.c
index 31ee6df2935b5bfe936f46c0b9795062dae0a226..35102b6dec76b78e5062156dda586c3d773daae6 100644 (file)
@@ -100,7 +100,8 @@ static int default_callback (const char __attribute__((unused)) *str,
       return (-1);
 
     if ((data->values_num == 0)
-       || (data->ds_type & UTILS_MATCH_CF_GAUGE_LAST))
+       || (data->ds_type & UTILS_MATCH_CF_GAUGE_LAST)
+       || (data->ds_type & UTILS_MATCH_CF_GAUGE_PERSIST))
     {
       data->value.gauge = value;
     }
@@ -295,13 +296,16 @@ cu_match_t *match_create_simple (const char *regex,
 
 void match_value_reset (cu_match_value_t *mv)
 {
-  if ((mv == NULL)
-      || ((mv->ds_type & UTILS_MATCH_DS_TYPE_GAUGE) == 0)
-      || ((mv->ds_type & UTILS_MATCH_CF_GAUGE_PERSIST) != 0))
+  if (mv == NULL)
     return;
 
-  mv->value.gauge = NAN;
-  mv->values_num = 0;
+  /* Reset GAUGE metrics only and except GAUGE_PERSIST. */
+  if ((mv->ds_type & UTILS_MATCH_DS_TYPE_GAUGE)
+      && !(mv->ds_type & UTILS_MATCH_CF_GAUGE_PERSIST))
+  {
+    mv->value.gauge = NAN;
+    mv->values_num = 0;
+  }
 } /* }}} void match_value_reset */
 
 void match_destroy (cu_match_t *obj)