in pipeline/sources/heartbeat.go [46:76]
func (h *heartbeat) run(start time.Time) {
interval := time.Duration(h.hb.IntervalSeconds) * time.Second
end := start.Add(interval)
running := true
for running {
now := h.clock.Now()
nextFire := now.Add(end.Sub(now))
timer := h.clock.NewTimerAt(nextFire)
select {
case <-timer.GetC():
report := metrics.MetricReport{
Name: h.hb.Metric,
StartTime: start,
EndTime: end,
Value: h.hb.Value,
Labels: h.hb.Labels,
}
err := h.input.AddReport(report.Copy())
if err != nil {
glog.Errorf("heartbeat: error sending report: %+v", err)
}
start = end
end = end.Add(interval)
case <-h.close:
running = false
}
timer.Stop()
}
h.wait.Done()
}