Correctly stop the timer used in the remote write path.

This commit is contained in:
Tom Wilkie 2018-03-09 12:00:26 +00:00
parent f63e7db4cb
commit 97a5fc8cbb
1 changed files with 17 additions and 4 deletions

View File

@ -430,6 +430,14 @@ func (s *shards) runShard(i int) {
pendingSamples := model.Samples{}
timer := time.NewTimer(s.qm.cfg.BatchSendDeadline)
defer func() {
if !timer.Stop() {
select {
case <-timer.C:
default:
}
}
}()
for {
select {
@ -449,11 +457,16 @@ func (s *shards) runShard(i int) {
for len(pendingSamples) >= s.qm.cfg.MaxSamplesPerSend {
s.sendSamples(pendingSamples[:s.qm.cfg.MaxSamplesPerSend])
pendingSamples = pendingSamples[s.qm.cfg.MaxSamplesPerSend:]
}
if !timer.Stop() {
<-timer.C
select {
case <-timer.C:
default:
}
}
timer.Reset(s.qm.cfg.BatchSendDeadline)
}
case <-timer.C:
if len(pendingSamples) > 0 {
s.sendSamples(pendingSamples)