in sharedlibraries/cloudmonitoring/cloudmonitoring.go [105:130]
func CreateTimeSeriesWithRetry(ctx context.Context, client TimeSeriesCreator, req *mpb.CreateTimeSeriesRequest, bo *BackOffIntervals) error {
attempt := 1
if bo == nil {
bo = NewDefaultBackOffIntervals()
}
err := backoff.Retry(func() error {
if err := client.CreateTimeSeries(ctx, req); err != nil {
if strings.Contains(err.Error(), "PermissionDenied") {
log.CtxLogger(ctx).Warnw("Error in CreateTimeSeries, Permission denied - Enable the Monitoring Metrics Writer IAM role for the Service Account", "attempt", attempt, "error", err)
} else {
log.CtxLogger(ctx).Warnw("Error in CreateTimeSeries", "attempt", attempt, "error", err)
}
attempt++
return err
}
return nil
}, ShortConstantBackOffPolicy(ctx, bo.ShortConstant, bo.Retries))
if err != nil {
log.CtxLogger(ctx).Errorw("CreateTimeSeries retry limit exceeded", "request", req)
return err
}
return nil
}