From 83c5e785955c194eb82668aaf0434fde5b9cedc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20Faruk=20IRMAK?= Date: Thu, 5 Jun 2025 21:29:54 +0300 Subject: [PATCH] restore original, make new private --- metrics/counter.go | 2 +- metrics/counter_float64.go | 2 +- metrics/gauge.go | 2 +- metrics/gauge_float64.go | 2 +- metrics/gauge_info.go | 2 +- metrics/histogram.go | 4 ++-- metrics/meter.go | 2 +- metrics/registry.go | 6 +++++- metrics/registry_test.go | 14 +++++++------- metrics/resetting_timer.go | 2 +- metrics/runtimehistogram.go | 2 +- metrics/timer.go | 2 +- 12 files changed, 23 insertions(+), 19 deletions(-) diff --git a/metrics/counter.go b/metrics/counter.go index 22c41ef909..c884e9a178 100644 --- a/metrics/counter.go +++ b/metrics/counter.go @@ -7,7 +7,7 @@ import ( // GetOrRegisterCounter returns an existing Counter or constructs and registers // a new Counter. func GetOrRegisterCounter(name string, r Registry) *Counter { - return GetOrRegister(name, NewCounter, r) + return getOrRegister(name, NewCounter, r) } // NewCounter constructs a new Counter. diff --git a/metrics/counter_float64.go b/metrics/counter_float64.go index a4e829f7aa..6cc73d89a2 100644 --- a/metrics/counter_float64.go +++ b/metrics/counter_float64.go @@ -8,7 +8,7 @@ import ( // GetOrRegisterCounterFloat64 returns an existing *CounterFloat64 or constructs and registers // a new CounterFloat64. func GetOrRegisterCounterFloat64(name string, r Registry) *CounterFloat64 { - return GetOrRegister(name, NewCounterFloat64, r) + return getOrRegister(name, NewCounterFloat64, r) } // NewCounterFloat64 constructs a new CounterFloat64. diff --git a/metrics/gauge.go b/metrics/gauge.go index 780971a9d1..20de95255b 100644 --- a/metrics/gauge.go +++ b/metrics/gauge.go @@ -11,7 +11,7 @@ func (g GaugeSnapshot) Value() int64 { return int64(g) } // GetOrRegisterGauge returns an existing Gauge or constructs and registers a // new Gauge. func GetOrRegisterGauge(name string, r Registry) *Gauge { - return GetOrRegister(name, NewGauge, r) + return getOrRegister(name, NewGauge, r) } // NewGauge constructs a new Gauge. diff --git a/metrics/gauge_float64.go b/metrics/gauge_float64.go index 016ff2eeb5..48524e4c3f 100644 --- a/metrics/gauge_float64.go +++ b/metrics/gauge_float64.go @@ -8,7 +8,7 @@ import ( // GetOrRegisterGaugeFloat64 returns an existing GaugeFloat64 or constructs and registers a // new GaugeFloat64. func GetOrRegisterGaugeFloat64(name string, r Registry) *GaugeFloat64 { - return GetOrRegister(name, NewGaugeFloat64, r) + return getOrRegister(name, NewGaugeFloat64, r) } // GaugeFloat64Snapshot is a read-only copy of a GaugeFloat64. diff --git a/metrics/gauge_info.go b/metrics/gauge_info.go index 4844f6560e..34ac917919 100644 --- a/metrics/gauge_info.go +++ b/metrics/gauge_info.go @@ -16,7 +16,7 @@ func (val GaugeInfoValue) String() string { // GetOrRegisterGaugeInfo returns an existing GaugeInfo or constructs and registers a // new GaugeInfo. func GetOrRegisterGaugeInfo(name string, r Registry) *GaugeInfo { - return GetOrRegister(name, NewGaugeInfo, r) + return getOrRegister(name, NewGaugeInfo, r) } // NewGaugeInfo constructs a new GaugeInfo. diff --git a/metrics/histogram.go b/metrics/histogram.go index b222730d0c..18bf6e3d2b 100644 --- a/metrics/histogram.go +++ b/metrics/histogram.go @@ -23,13 +23,13 @@ type Histogram interface { // GetOrRegisterHistogram returns an existing Histogram or constructs and // registers a new StandardHistogram. func GetOrRegisterHistogram(name string, r Registry, s Sample) Histogram { - return GetOrRegister(name, func() Histogram { return NewHistogram(s) }, r).(Histogram) + return getOrRegister(name, func() Histogram { return NewHistogram(s) }, r) } // GetOrRegisterHistogramLazy returns an existing Histogram or constructs and // registers a new StandardHistogram. func GetOrRegisterHistogramLazy(name string, r Registry, s func() Sample) Histogram { - return GetOrRegister(name, func() Histogram { return NewHistogram(s()) }, r).(Histogram) + return getOrRegister(name, func() Histogram { return NewHistogram(s()) }, r) } // NewHistogram constructs a new StandardHistogram from a Sample. diff --git a/metrics/meter.go b/metrics/meter.go index ec1b420541..ee23af10eb 100644 --- a/metrics/meter.go +++ b/metrics/meter.go @@ -12,7 +12,7 @@ import ( // Be sure to unregister the meter from the registry once it is of no use to // allow for garbage collection. func GetOrRegisterMeter(name string, r Registry) *Meter { - return GetOrRegister(name, NewMeter, r) + return getOrRegister(name, NewMeter, r) } // NewMeter constructs a new Meter and launches a goroutine. diff --git a/metrics/registry.go b/metrics/registry.go index ad3ea31ae1..6070f3d0e9 100644 --- a/metrics/registry.go +++ b/metrics/registry.go @@ -327,7 +327,11 @@ func Get(name string) interface{} { // GetOrRegister gets an existing metric or creates and registers a new one. Threadsafe // alternative to calling Get and Register on failure. -func GetOrRegister[T any](name string, ctor func() T, r Registry) T { +func GetOrRegister(name string, i func() interface{}) interface{} { + return DefaultRegistry.GetOrRegister(name, i) +} + +func getOrRegister[T any](name string, ctor func() T, r Registry) T { if r == nil { r = DefaultRegistry } diff --git a/metrics/registry_test.go b/metrics/registry_test.go index 17483001e4..6af0796da9 100644 --- a/metrics/registry_test.go +++ b/metrics/registry_test.go @@ -30,7 +30,7 @@ func benchmarkRegistryGetOrRegisterParallel(b *testing.B, amount int) { wg.Add(1) go func() { for i := 0; i < b.N; i++ { - GetOrRegister("foo", NewMeter, r) + GetOrRegisterMeter("foo", r) } wg.Done() }() @@ -98,8 +98,8 @@ func TestRegistryGetOrRegister(t *testing.T) { r := NewRegistry() // First metric wins with GetOrRegister - c1 := GetOrRegister("foo", NewCounter, r) - c2 := GetOrRegister("foo", NewCounter, r) + c1 := GetOrRegisterCounter("foo", r) + c2 := GetOrRegisterCounter("foo", r) if c1 != c2 { t.Fatal("counters should've matched") } @@ -123,8 +123,8 @@ func TestRegistryGetOrRegisterWithLazyInstantiation(t *testing.T) { r := NewRegistry() // First metric wins with GetOrRegister - c1 := GetOrRegister("foo", NewCounter, r) - c2 := GetOrRegister("foo", NewCounter, r) + c1 := GetOrRegisterCounter("foo", r) + c2 := GetOrRegisterCounter("foo", r) if c1 != c2 { t.Fatal("counters should've matched") } @@ -165,7 +165,7 @@ func TestPrefixedChildRegistryGetOrRegister(t *testing.T) { r := NewRegistry() pr := NewPrefixedChildRegistry(r, "prefix.") - _ = GetOrRegister("foo", NewCounter, pr) + _ = GetOrRegisterCounter("foo", pr) i := 0 r.Each(func(name string, m interface{}) { @@ -182,7 +182,7 @@ func TestPrefixedChildRegistryGetOrRegister(t *testing.T) { func TestPrefixedRegistryGetOrRegister(t *testing.T) { r := NewPrefixedRegistry("prefix.") - _ = GetOrRegister("foo", NewCounter, r) + _ = GetOrRegisterCounter("foo", r) i := 0 r.Each(func(name string, m interface{}) { diff --git a/metrics/resetting_timer.go b/metrics/resetting_timer.go index ae1077e5df..8aa7dc1488 100644 --- a/metrics/resetting_timer.go +++ b/metrics/resetting_timer.go @@ -8,7 +8,7 @@ import ( // GetOrRegisterResettingTimer returns an existing ResettingTimer or constructs and registers a // new ResettingTimer. func GetOrRegisterResettingTimer(name string, r Registry) *ResettingTimer { - return GetOrRegister(name, NewResettingTimer, r) + return getOrRegister(name, NewResettingTimer, r) } // NewRegisteredResettingTimer constructs and registers a new ResettingTimer. diff --git a/metrics/runtimehistogram.go b/metrics/runtimehistogram.go index b688fed44f..53904b2b28 100644 --- a/metrics/runtimehistogram.go +++ b/metrics/runtimehistogram.go @@ -9,7 +9,7 @@ import ( func getOrRegisterRuntimeHistogram(name string, scale float64, r Registry) *runtimeHistogram { constructor := func() Histogram { return newRuntimeHistogram(scale) } - return GetOrRegister(name, constructor, r).(*runtimeHistogram) + return getOrRegister(name, constructor, r).(*runtimeHistogram) } // runtimeHistogram wraps a runtime/metrics histogram. diff --git a/metrics/timer.go b/metrics/timer.go index e150822936..894bdfc327 100644 --- a/metrics/timer.go +++ b/metrics/timer.go @@ -10,7 +10,7 @@ import ( // Be sure to unregister the meter from the registry once it is of no use to // allow for garbage collection. func GetOrRegisterTimer(name string, r Registry) *Timer { - return GetOrRegister(name, NewTimer, r) + return getOrRegister(name, NewTimer, r) } // NewCustomTimer constructs a new Timer from a Histogram and a Meter.