Skip to content

Commit

Permalink
metrics: added NewCounterForced (ethereum#17919)
Browse files Browse the repository at this point in the history
  • Loading branch information
gzliudan authored and JukLee0ira committed Dec 22, 2024
1 parent 535bdec commit b686a80
Showing 1 changed file with 33 additions and 1 deletion.
34 changes: 33 additions & 1 deletion metrics/counter.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package metrics

import "sync/atomic"
import (
"sync/atomic"
)

// Counters hold an int64 value that can be incremented and decremented.
type Counter interface {
Expand All @@ -20,6 +22,17 @@ func GetOrRegisterCounter(name string, r Registry) Counter {
return r.GetOrRegister(name, NewCounter).(Counter)
}

// GetOrRegisterCounterForced returns an existing Counter or constructs and registers a
// new Counter no matter the global switch is enabled or not.
// Be sure to unregister the counter from the registry once it is of no use to
// allow for garbage collection.
func GetOrRegisterCounterForced(name string, r Registry) Counter {
if nil == r {
r = DefaultRegistry
}
return r.GetOrRegister(name, NewCounterForced).(Counter)
}

// NewCounter constructs a new StandardCounter.
func NewCounter() Counter {
if !Enabled {
Expand All @@ -28,6 +41,12 @@ func NewCounter() Counter {
return &StandardCounter{0}
}

// NewCounterForced constructs a new StandardCounter and returns it no matter if
// the global switch is enabled or not.
func NewCounterForced() Counter {
return &StandardCounter{0}
}

// NewRegisteredCounter constructs and registers a new StandardCounter.
func NewRegisteredCounter(name string, r Registry) Counter {
c := NewCounter()
Expand All @@ -38,6 +57,19 @@ func NewRegisteredCounter(name string, r Registry) Counter {
return c
}

// NewRegisteredCounterForced constructs and registers a new StandardCounter
// and launches a goroutine no matter the global switch is enabled or not.
// Be sure to unregister the counter from the registry once it is of no use to
// allow for garbage collection.
func NewRegisteredCounterForced(name string, r Registry) Counter {
c := NewCounterForced()
if nil == r {
r = DefaultRegistry
}
r.Register(name, c)
return c
}

// CounterSnapshot is a read-only copy of another Counter.
type CounterSnapshot int64

Expand Down

0 comments on commit b686a80

Please sign in to comment.