(fn func() error)
| 76 | } |
| 77 | |
| 78 | func runWithBackoffRetry(fn func() error) error { |
| 79 | return backoff.RetryNotify( |
| 80 | func() error { |
| 81 | err := fn() |
| 82 | if !isRetriableAPIError(err) { |
| 83 | return backoff.Permanent(err) |
| 84 | } |
| 85 | return err |
| 86 | }, |
| 87 | backoff.NewExponentialBackOff(backoff.WithMaxElapsedTime(3*time.Minute)), |
| 88 | func(err error, delay time.Duration) { |
| 89 | l := logger.Debug().Err(err) |
| 90 | if v1.IsAttestationStateErrorConflict(err) { |
| 91 | l.Msgf("concurrent state update detected, retrying in %s", delay) |
| 92 | } else { |
| 93 | l.Msgf("retrying in %s", delay) |
| 94 | } |
| 95 | }) |
| 96 | } |
no test coverage detected