Skip to content

Commit 603a08f

Browse files
committed
Clean up NewRefresher
1 parent d5cb196 commit 603a08f

File tree

2 files changed

+32
-30
lines changed

2 files changed

+32
-30
lines changed

ra/ra.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ func NewRegistrationAuthorityImpl(
243243
keyPolicy: keyPolicy,
244244
limiter: limiter,
245245
txnBuilder: txnBuilder,
246-
started: time.Now(),
246+
started: clk.Now(),
247247
publisher: pubc,
248248
finalizeTimeout: finalizeTimeout,
249249
ctpolicy: ctp,

ratelimits/limit.go

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -383,46 +383,48 @@ func (l *limitRegistry) loadOverrides(ctx context.Context) error {
383383
return nil
384384
}
385385

386+
// loadOverridesWithRetry tries to loadOverrides, retrying at least every 30
387+
// seconds upon failure, up to a maximum elapsed time interval.
388+
func (l *limitRegistry) loadOverridesWithRetry(ctx context.Context, interval time.Duration) error {
389+
retries := 0
390+
started := time.Now()
391+
for {
392+
err := l.loadOverrides(ctx)
393+
if err != nil {
394+
l.logger.Errf("loading overrides: %v", err)
395+
}
396+
if err == nil || time.Since(started) > interval {
397+
return err
398+
}
399+
retries++
400+
time.Sleep(core.RetryBackoff(retries, time.Second/6, time.Second*15, 2))
401+
}
402+
}
403+
386404
// NewRefresher loads, and periodically refreshes, overrides using this
387405
// registry's refreshOverrides function.
388406
func (l *limitRegistry) NewRefresher(interval time.Duration) context.CancelFunc {
389407
ctx, cancel := context.WithCancel(context.Background())
390408

391409
go func() {
392-
// Load overrides immediately. Upon failure, retry at least every 30
393-
// seconds, in case the SA wasn't ready yet.
394-
retries := 0
395-
started := time.Now()
396-
for {
397-
err := l.loadOverrides(ctx)
398-
if err != nil {
399-
l.logger.Errf("loading overrides (initial): %v", err)
400-
}
401-
// If we've been retrying for an entire interval, back off; we'll
402-
// try to refresh next interval.
403-
if err == nil || time.Since(started) > interval {
404-
break
405-
}
406-
retries++
407-
time.Sleep(core.RetryBackoff(retries, time.Second/6, time.Second*15, 2))
410+
err := l.loadOverridesWithRetry(ctx, interval)
411+
if err != nil {
412+
l.logger.Errf("loading overrides (initial): %v", err)
408413
}
409414

410-
// Now refresh overrides every interval.
411415
ticker := time.NewTicker(interval)
412-
go func() {
413-
defer ticker.Stop()
414-
for {
415-
select {
416-
case <-ticker.C:
417-
err := l.loadOverrides(ctx)
418-
if err != nil {
419-
l.logger.Errf("loading overrides (refresh): %v", err)
420-
}
421-
case <-ctx.Done():
422-
return
416+
defer ticker.Stop()
417+
for {
418+
select {
419+
case <-ticker.C:
420+
err := l.loadOverridesWithRetry(ctx, interval)
421+
if err != nil {
422+
l.logger.Errf("loading overrides (refresh): %v", err)
423423
}
424+
case <-ctx.Done():
425+
return
424426
}
425-
}()
427+
}
426428
}()
427429

428430
return cancel

0 commit comments

Comments
 (0)