mirror of
https://github.com/LBRYFoundation/tracker.git
synced 2025-08-23 17:47:29 +00:00
Use a single goroutine for stats aggregation
This commit is contained in:
parent
ce2e335562
commit
7400792cc4
1 changed files with 46 additions and 51 deletions
|
@ -107,9 +107,6 @@ func New(chanSize int) *Stats {
|
||||||
}
|
}
|
||||||
|
|
||||||
go s.handleEvents()
|
go s.handleEvents()
|
||||||
go s.handlePeerEvents()
|
|
||||||
go s.handleTimings()
|
|
||||||
|
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +140,27 @@ func (s *Stats) RecordTiming(event int, duration time.Duration) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Stats) handleEvents() {
|
func (s *Stats) handleEvents() {
|
||||||
for event := range s.events {
|
for {
|
||||||
|
select {
|
||||||
|
case event := <-s.events:
|
||||||
|
s.handleEvent(event)
|
||||||
|
|
||||||
|
case event := <-s.ipv4PeerEvents:
|
||||||
|
s.handlePeerEvent(&s.IPv4Peers, event)
|
||||||
|
|
||||||
|
case event := <-s.ipv6PeerEvents:
|
||||||
|
s.handlePeerEvent(&s.IPv6Peers, event)
|
||||||
|
|
||||||
|
case duration := <-s.responseTimeEvents:
|
||||||
|
f := float64(duration) / float64(time.Millisecond)
|
||||||
|
s.ResponseTime.P50.AddSample(f)
|
||||||
|
s.ResponseTime.P90.AddSample(f)
|
||||||
|
s.ResponseTime.P95.AddSample(f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Stats) handleEvent(event int) {
|
||||||
switch event {
|
switch event {
|
||||||
case Announce:
|
case Announce:
|
||||||
s.Announces++
|
s.Announces++
|
||||||
|
@ -176,19 +193,6 @@ func (s *Stats) handleEvents() {
|
||||||
default:
|
default:
|
||||||
panic("stats: RecordEvent called with an unknown event")
|
panic("stats: RecordEvent called with an unknown event")
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Stats) handlePeerEvents() {
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case event := <-s.ipv4PeerEvents:
|
|
||||||
s.handlePeerEvent(&s.IPv4Peers, event)
|
|
||||||
|
|
||||||
case event := <-s.ipv6PeerEvents:
|
|
||||||
s.handlePeerEvent(&s.IPv6Peers, event)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Stats) handlePeerEvent(ps *PeerStats, event int) {
|
func (s *Stats) handlePeerEvent(ps *PeerStats, event int) {
|
||||||
|
@ -226,18 +230,9 @@ func (s *Stats) handlePeerEvent(ps *PeerStats, event int) {
|
||||||
ps.SeedsCurrent--
|
ps.SeedsCurrent--
|
||||||
ps.Reaped++
|
ps.Reaped++
|
||||||
ps.Current--
|
ps.Current--
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Stats) handleTimings() {
|
default:
|
||||||
for {
|
panic("stats: RecordPeerEvent called with an unknown event")
|
||||||
select {
|
|
||||||
case duration := <-s.responseTimeEvents:
|
|
||||||
f := float64(duration) / float64(time.Millisecond)
|
|
||||||
s.ResponseTime.P50.AddSample(f)
|
|
||||||
s.ResponseTime.P90.AddSample(f)
|
|
||||||
s.ResponseTime.P95.AddSample(f)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue