(d time.Duration, do, cleanup func() error)
| 17 | ) |
| 18 | |
| 19 | func (p *Proxy) startMetricsReporter(d time.Duration, do, cleanup func() error) { |
| 20 | go func() { |
| 21 | if cleanup != nil { |
| 22 | defer cleanup() |
| 23 | } |
| 24 | var ticker = time.NewTicker(d) |
| 25 | defer ticker.Stop() |
| 26 | var delay = &DelayExp2{ |
| 27 | Min: 1, Max: 15, |
| 28 | Unit: time.Second, |
| 29 | } |
| 30 | for !p.IsClosed() { |
| 31 | <-ticker.C |
| 32 | if err := do(); err != nil { |
| 33 | log.WarnErrorf(err, "report metrics failed") |
| 34 | delay.SleepWithCancel(p.IsClosed) |
| 35 | } else { |
| 36 | delay.Reset() |
| 37 | } |
| 38 | } |
| 39 | }() |
| 40 | } |
| 41 | |
| 42 | func (p *Proxy) startMetricsJson() { |
| 43 | server := p.config.MetricsReportServer |
no test coverage detected