mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 09:53:48 +00:00
metrics: make meterticker.remove end ticker loop
This commit is contained in:
parent
864e717b56
commit
5f2bc05c49
1 changed files with 17 additions and 9 deletions
|
|
@ -124,7 +124,7 @@ func (m *Meter) tick() {
|
||||||
m.a15.tick()
|
m.a15.tick()
|
||||||
}
|
}
|
||||||
|
|
||||||
var arbiter = meterTicker{meters: make(map[*Meter]struct{})}
|
var arbiter = meterTicker{meters: make(map[*Meter]struct{}), stopCh: make(chan struct{})}
|
||||||
|
|
||||||
// meterTicker ticks meters every 5s from a single goroutine.
|
// meterTicker ticks meters every 5s from a single goroutine.
|
||||||
// meters are references in a set for future stopping.
|
// meters are references in a set for future stopping.
|
||||||
|
|
@ -133,6 +133,7 @@ type meterTicker struct {
|
||||||
|
|
||||||
started bool
|
started bool
|
||||||
meters map[*Meter]struct{}
|
meters map[*Meter]struct{}
|
||||||
|
stopCh chan struct{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add adds another *Meter ot the arbiter, and starts the arbiter ticker.
|
// add adds another *Meter ot the arbiter, and starts the arbiter ticker.
|
||||||
|
|
@ -149,6 +150,7 @@ func (ma *meterTicker) add(m *Meter) {
|
||||||
// remove removes a meter from the set of ticked meters.
|
// remove removes a meter from the set of ticked meters.
|
||||||
func (ma *meterTicker) remove(m *Meter) {
|
func (ma *meterTicker) remove(m *Meter) {
|
||||||
ma.mu.Lock()
|
ma.mu.Lock()
|
||||||
|
close(ma.stopCh)
|
||||||
delete(ma.meters, m)
|
delete(ma.meters, m)
|
||||||
ma.mu.Unlock()
|
ma.mu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
@ -156,7 +158,10 @@ func (ma *meterTicker) remove(m *Meter) {
|
||||||
// loop ticks meters on a 5 second interval.
|
// loop ticks meters on a 5 second interval.
|
||||||
func (ma *meterTicker) loop() {
|
func (ma *meterTicker) loop() {
|
||||||
ticker := time.NewTicker(5 * time.Second)
|
ticker := time.NewTicker(5 * time.Second)
|
||||||
for range ticker.C {
|
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-ticker.C:
|
||||||
if !metricsEnabled {
|
if !metricsEnabled {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
@ -165,5 +170,8 @@ func (ma *meterTicker) loop() {
|
||||||
meter.tick()
|
meter.tick()
|
||||||
}
|
}
|
||||||
ma.mu.RUnlock()
|
ma.mu.RUnlock()
|
||||||
|
case <-ma.stopCh:
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue