in ringpop.go [224:266]
func (rp *Ringpop) startTimers() {
if rp.tickers != nil {
return
}
rp.tickers = make(chan *clock.Ticker, 32) // 32 == max number of tickers
if rp.config.MembershipChecksumStatPeriod != StatPeriodNever {
ticker := rp.clock.Ticker(rp.config.MembershipChecksumStatPeriod)
rp.tickers <- ticker
go func() {
for range ticker.C {
rp.statter.UpdateGauge(
rp.getStatKey("membership.checksum-periodic"),
nil,
int64(rp.node.GetChecksum()),
)
}
}()
}
if rp.config.RingChecksumStatPeriod != StatPeriodNever {
ticker := rp.clock.Ticker(rp.config.RingChecksumStatPeriod)
rp.tickers <- ticker
go func() {
for range ticker.C {
rp.statter.UpdateGauge(
rp.getStatKey("ring.checksum-periodic"),
nil,
int64(rp.ring.Checksum()),
)
// emit all named checksums as well
for name, checksum := range rp.ring.Checksums() {
rp.statter.UpdateGauge(
rp.getStatKey("ring.checksums-periodic."+name),
nil,
int64(checksum),
)
}
}
}()
}
}