From 5aa995cdf8fef863e199e00d4cb309c32cd7eed2 Mon Sep 17 00:00:00 2001 From: Mikhail Alpinskiy Date: Thu, 12 Dec 2024 10:38:06 +0300 Subject: [PATCH] Do not panic when writing via nil metric trace instead --- statshouse.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/statshouse.go b/statshouse.go index 46c8bc1..317bf9d 100644 --- a/statshouse.go +++ b/statshouse.go @@ -972,6 +972,10 @@ func (m *MetricRef) IsNil() bool { return m.bucket == nil } +func (m *MetricRef) Equal(other MetricRef) bool { + return m.bucket == other.bucket +} + // Count records the number of events or observations. func (m *MetricRef) Count(n float64) { m.CountHistoric(n, 0) @@ -1200,6 +1204,10 @@ func (c *Client) NamedStringsTopHistoric(name string, tags NamedTags, values []s } func (m *MetricRef) write(tsUnixSec uint32, fn func(*bucket)) { + if m.bucket == nil { + log.Println("[statshouse] data loss: nil metric write") + return + } m.mu.Lock() tsZeroOrEqual := tsUnixSec == 0 || m.tsUnixSec <= tsUnixSec if m.attached && tsZeroOrEqual {