From a0d8e78cb747b70b8a6ed9597b336c9cb4e6b593 Mon Sep 17 00:00:00 2001 From: Sergei Razmetov Date: Thu, 14 Nov 2024 17:33:58 +0300 Subject: [PATCH] Fix historic data handling --- statshouse.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/statshouse.go b/statshouse.go index b4cf807..b3d8ed9 100644 --- a/statshouse.go +++ b/statshouse.go @@ -967,6 +967,8 @@ func (m *MetricRef) Count(n float64) { func (m *MetricRef) CountHistoric(n float64, tsUnixSec uint32) { m.write(tsUnixSec, func(b *bucket) { + b.k = m.k + b.kn = m.kn b.count += n }) } @@ -998,6 +1000,8 @@ func (m *MetricRef) Value(value float64) { func (m *MetricRef) ValueHistoric(value float64, tsUnixSec uint32) { m.write(tsUnixSec, func(b *bucket) { + b.k = m.k + b.kn = m.kn b.value = append(b.value, value) }) } @@ -1031,6 +1035,8 @@ func (m *MetricRef) Values(values []float64) { func (m *MetricRef) ValuesHistoric(values []float64, tsUnixSec uint32) { m.write(tsUnixSec, func(b *bucket) { + b.k = m.k + b.kn = m.kn b.value = append(b.value, values...) }) } @@ -1064,6 +1070,8 @@ func (m *MetricRef) Unique(value int64) { func (m *MetricRef) UniqueHistoric(value int64, tsUnixSec uint32) { m.write(tsUnixSec, func(b *bucket) { + b.k = m.k + b.kn = m.kn b.unique = append(b.unique, value) }) } @@ -1097,6 +1105,8 @@ func (m *MetricRef) Uniques(values []int64) { func (m *MetricRef) UniquesHistoric(values []int64, tsUnixSec uint32) { m.write(tsUnixSec, func(b *bucket) { + b.k = m.k + b.kn = m.kn b.unique = append(b.unique, values...) }) } @@ -1130,6 +1140,8 @@ func (m *MetricRef) StringTop(value string) { func (m *MetricRef) StringTopHistoric(value string, tsUnixSec uint32) { m.write(tsUnixSec, func(b *bucket) { + b.k = m.k + b.kn = m.kn b.stop = append(b.stop, value) }) } @@ -1163,6 +1175,8 @@ func (m *MetricRef) StringsTop(values []string) { func (m *MetricRef) StringsTopHistoric(values []string, tsUnixSec uint32) { m.write(tsUnixSec, func(b *bucket) { + b.k = m.k + b.kn = m.kn b.stop = append(b.stop, values...) }) } @@ -1201,6 +1215,7 @@ func (m *MetricRef) write(tsUnixSec uint32, fn func(*bucket)) { m.mu.Unlock() var b bucket fn(&b) + b.swapToSend(tsUnixSec) c.transportMu.Lock() b.send(c, tsUnixSec) c.transportMu.Unlock()