Skip to content

Commit

Permalink
Enable debug logging in the retryable HTTP client (#117)
Browse files Browse the repository at this point in the history
This passes the global logger in to the retryablehttp client we use,
meaning that, if `--debug` is enabled, we'll emit debug logs about what
HTTP requests are happening and whether they're being retried.
  • Loading branch information
isaacseymour committed May 1, 2024
1 parent ff3c8bb commit 51f7f43
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 4 deletions.
16 changes: 14 additions & 2 deletions client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"time"

"github.com/deepmap/oapi-codegen/pkg/securityprovider"
kitlog "github.com/go-kit/kit/log"
"github.com/go-kit/log/level"
"github.com/hashicorp/go-retryablehttp"
"github.com/pkg/errors"
"golang.org/x/time/rate"
Expand Down Expand Up @@ -59,14 +61,24 @@ func attentiveBackoff(min, max time.Duration, attemptNum int, resp *http.Respons
return retryablehttp.DefaultBackoff(min, max, attemptNum, resp)
}

func New(ctx context.Context, apiKey, apiEndpoint, version string, opts ...ClientOption) (*ClientWithResponses, error) {
var _ retryablehttp.Logger = &retryableHttpLogger{}

type retryableHttpLogger struct {
kitlog.Logger
}

func (l *retryableHttpLogger) Printf(message string, args ...interface{}) {
level.Debug(l.Logger).Log("req", fmt.Sprintf(message, args...))
}

func New(ctx context.Context, apiKey, apiEndpoint, version string, logger kitlog.Logger, opts ...ClientOption) (*ClientWithResponses, error) {
bearerTokenProvider, bearerTokenProviderErr := securityprovider.NewSecurityProviderBearerToken(apiKey)
if bearerTokenProviderErr != nil {
return nil, bearerTokenProviderErr
}

retryClient := retryablehttp.NewClient()
retryClient.Logger = nil
retryClient.Logger = &retryableHttpLogger{logger}
retryClient.RetryMax = maxRetries
retryClient.RetryWaitMin = minRetryWait
retryClient.RetryWaitMax = maxRetryWait
Expand Down
2 changes: 1 addition & 1 deletion cmd/catalog-importer/cmd/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func (opt *SyncOptions) Run(ctx context.Context, logger kitlog.Logger, cfg *conf
}

// Build incident.io client
cl, err := client.New(ctx, opt.APIKey, opt.APIEndpoint, Version(), clientOptions...)
cl, err := client.New(ctx, opt.APIKey, opt.APIEndpoint, Version(), logger, clientOptions...)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/catalog-importer/cmd/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func (opt *TypesOptions) Run(ctx context.Context, logger kitlog.Logger) error {
}

// Build incident.io client
cl, err := client.New(ctx, opt.APIKey, opt.APIEndpoint, Version())
cl, err := client.New(ctx, opt.APIKey, opt.APIEndpoint, Version(), logger)
if err != nil {
return err
}
Expand Down

0 comments on commit 51f7f43

Please sign in to comment.