From bde8c6477baa7410dd04f66087e119f4718132bc Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Sat, 6 Jun 2015 21:22:25 +0200 Subject: [PATCH] statsd plugin: Dispatch NaN when no timer event was recorded. This makes timing events appear faster when writing to RRD files. Fixes: #1038, #1049 --- src/statsd.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/statsd.c b/src/statsd.c index f6811b6f..1512b866 100644 --- a/src/statsd.c +++ b/src/statsd.c @@ -777,39 +777,42 @@ static int statsd_metric_submit_unsafe (char const *name, /* {{{ */ else if (metric->type == STATSD_TIMER) { size_t i; + _Bool have_events = (metric->updates_num > 0); - if (metric->updates_num == 0) - return (0); - + /* Make sure all timer metrics share the *same* timestamp. */ vl.time = cdtime (); ssnprintf (vl.type_instance, sizeof (vl.type_instance), "%s-average", name); - values[0].gauge = CDTIME_T_TO_DOUBLE ( - latency_counter_get_average (metric->latency)); + values[0].gauge = have_events + ? CDTIME_T_TO_DOUBLE (latency_counter_get_average (metric->latency)) + : NAN; plugin_dispatch_values (&vl); if (conf_timer_lower) { ssnprintf (vl.type_instance, sizeof (vl.type_instance), "%s-lower", name); - values[0].gauge = CDTIME_T_TO_DOUBLE ( - latency_counter_get_min (metric->latency)); + values[0].gauge = have_events + ? CDTIME_T_TO_DOUBLE (latency_counter_get_min (metric->latency)) + : NAN; plugin_dispatch_values (&vl); } if (conf_timer_upper) { ssnprintf (vl.type_instance, sizeof (vl.type_instance), "%s-upper", name); - values[0].gauge = CDTIME_T_TO_DOUBLE ( - latency_counter_get_max (metric->latency)); + values[0].gauge = have_events + ? CDTIME_T_TO_DOUBLE (latency_counter_get_max (metric->latency)) + : NAN; plugin_dispatch_values (&vl); } if (conf_timer_sum) { ssnprintf (vl.type_instance, sizeof (vl.type_instance), "%s-sum", name); - values[0].gauge = CDTIME_T_TO_DOUBLE ( - latency_counter_get_sum (metric->latency)); + values[0].gauge = have_events + ? CDTIME_T_TO_DOUBLE (latency_counter_get_sum (metric->latency)) + : NAN; plugin_dispatch_values (&vl); } @@ -817,9 +820,9 @@ static int statsd_metric_submit_unsafe (char const *name, /* {{{ */ { ssnprintf (vl.type_instance, sizeof (vl.type_instance), "%s-percentile-%.0f", name, conf_timer_percentile[i]); - values[0].gauge = CDTIME_T_TO_DOUBLE ( - latency_counter_get_percentile ( - metric->latency, conf_timer_percentile[i])); + values[0].gauge = have_events + ? CDTIME_T_TO_DOUBLE (latency_counter_get_percentile (metric->latency, conf_timer_percentile[i])) + : NAN; plugin_dispatch_values (&vl); } -- 2.11.0