func()

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),
					)
				}
			}
		}()
	}
}