Skip to content

Commit

Permalink
Inherit previous instance's stats in statsd plugin.
Browse files Browse the repository at this point in the history
This way, after a reload, the stats wont restart again at least for the
counter type.

closes #887
  • Loading branch information
entertainyou authored and sparrc committed Mar 18, 2016
1 parent 77dcbe9 commit 18f4afb
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions plugins/inputs/statsd/statsd.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ const (
var dropwarn = "ERROR: Message queue full. Discarding line [%s] " +
"You may want to increase allowed_pending_messages in the config\n"

var prevInstance *Statsd

type Statsd struct {
// Address & Port to serve from
ServiceAddress string
Expand Down Expand Up @@ -234,17 +236,26 @@ func (s *Statsd) Start(_ telegraf.Accumulator) error {
// Make data structures
s.done = make(chan struct{})
s.in = make(chan []byte, s.AllowedPendingMessages)
s.gauges = make(map[string]cachedgauge)
s.counters = make(map[string]cachedcounter)
s.sets = make(map[string]cachedset)
s.timings = make(map[string]cachedtimings)

if prevInstance == nil {
s.gauges = make(map[string]cachedgauge)
s.counters = make(map[string]cachedcounter)
s.sets = make(map[string]cachedset)
s.timings = make(map[string]cachedtimings)
} else {
s.gauges = prevInstance.gauges
s.counters = prevInstance.counters
s.sets = prevInstance.sets
s.timings = prevInstance.timings
}

s.wg.Add(2)
// Start the UDP listener
go s.udpListen()
// Start the line parser
go s.parser()
log.Printf("Started the statsd service on %s\n", s.ServiceAddress)
prevInstance = s
return nil
}

Expand Down

0 comments on commit 18f4afb

Please sign in to comment.