From 92b6be0db118e042a243511ae15599389023d26a Mon Sep 17 00:00:00 2001 From: thatben Date: Wed, 15 Jan 2025 10:46:58 +0100 Subject: [PATCH] fixes initialization of stat values --- codex/utils/statsummary.nim | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/codex/utils/statsummary.nim b/codex/utils/statsummary.nim index df4729bd..ff9080e6 100644 --- a/codex/utils/statsummary.nim +++ b/codex/utils/statsummary.nim @@ -2,11 +2,15 @@ import pkg/metrics when defined(metrics): type StatSummary* = ref object of Collector + hasValues: bool min: float64 max: float64 ravg: float64 method collect(st: StatSummary, output: MetricHandler) = + if not st.hasValues: + return + let timestamp = st.now() output( name = st.name & "_min", @@ -27,17 +31,22 @@ when defined(metrics): proc declareStatSummary*(name: string, help: string = ""): StatSummary = when defined(metrics): result = StatSummary.newCollector(name, help) - result.min = high(float64) - result.max = low(float64) + result.hasValues = false else: return IgnoredCollector proc observeStatSummary(st: StatSummary, value: float64) = - if value < st.min: + if st.hasValues: + if value < st.min: + st.min = value + if value > st.max: + st.max = value + st.ravg = (st.ravg + value) / float64(2) + else: + st.hasValues = true st.min = value - if value > st.max: st.max = value - st.ravg = (st.ravg + value) / 2.0 + st.ravg = value template observe*(statSummary: StatSummary | type IgnoredCollector, amount: int64 | float64 = 1) = when defined(metrics) and statSummary is not IgnoredCollector: