Merge pull request #3731 from bboreham/reuse-timer

Re-use timer in remote storage queue
This commit is contained in:
Tom Wilkie 2018-02-05 10:54:08 +01:00 committed by GitHub
commit a730083cbf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -430,6 +430,8 @@ func (s *shards) runShard(i int) {
// anyways. // anyways.
pendingSamples := model.Samples{} pendingSamples := model.Samples{}
timer := time.NewTimer(s.qm.cfg.BatchSendDeadline)
for { for {
select { select {
case sample, ok := <-queue: case sample, ok := <-queue:
@ -449,7 +451,11 @@ func (s *shards) runShard(i int) {
s.sendSamples(pendingSamples[:s.qm.cfg.MaxSamplesPerSend]) s.sendSamples(pendingSamples[:s.qm.cfg.MaxSamplesPerSend])
pendingSamples = pendingSamples[s.qm.cfg.MaxSamplesPerSend:] pendingSamples = pendingSamples[s.qm.cfg.MaxSamplesPerSend:]
} }
case <-time.After(s.qm.cfg.BatchSendDeadline): if !timer.Stop() {
<-timer.C
}
timer.Reset(s.qm.cfg.BatchSendDeadline)
case <-timer.C:
if len(pendingSamples) > 0 { if len(pendingSamples) > 0 {
s.sendSamples(pendingSamples) s.sendSamples(pendingSamples)
pendingSamples = pendingSamples[:0] pendingSamples = pendingSamples[:0]