Skip to content

Commit

Permalink
feat(remote): make retryStatusCodes configurable
Browse files Browse the repository at this point in the history
  • Loading branch information
aslafy-z committed Apr 19, 2023
1 parent 0962e29 commit 0e35c92
Showing 1 changed file with 19 additions and 9 deletions.
28 changes: 19 additions & 9 deletions pkg/v1/remote/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ type options struct {
pageSize int
retryBackoff Backoff
retryPredicate retry.Predicate
retryStatusCodes []int
filter map[string]string
}

Expand Down Expand Up @@ -83,7 +84,7 @@ var fastBackoff = Backoff{
Steps: 3,
}

var retryableStatusCodes = []int{
var defaultRetryStatusCodes = []int{
http.StatusRequestTimeout,
http.StatusInternalServerError,
http.StatusBadGateway,
Expand Down Expand Up @@ -119,13 +120,14 @@ var DefaultTransport http.RoundTripper = &http.Transport{

func makeOptions(opts ...Option) (*options, error) {
o := &options{
transport: DefaultTransport,
platform: defaultPlatform,
context: context.Background(),
jobs: defaultJobs,
pageSize: defaultPageSize,
retryPredicate: defaultRetryPredicate,
retryBackoff: defaultRetryBackoff,
transport: DefaultTransport,
platform: defaultPlatform,
context: context.Background(),
jobs: defaultJobs,
pageSize: defaultPageSize,
retryPredicate: defaultRetryPredicate,
retryBackoff: defaultRetryBackoff,
retryStatusCodes: defaultRetryStatusCodes,
}

for _, option := range opts {
Expand Down Expand Up @@ -154,7 +156,7 @@ func makeOptions(opts ...Option) (*options, error) {
}

// Wrap the transport in something that can retry network flakes.
o.transport = transport.NewRetry(o.transport, transport.WithRetryPredicate(defaultRetryPredicate), transport.WithRetryStatusCodes(retryableStatusCodes...))
o.transport = transport.NewRetry(o.transport, transport.WithRetryPredicate(defaultRetryPredicate), transport.WithRetryStatusCodes(o.retryStatusCodes...))

// Wrap this last to prevent transport.New from double-wrapping.
if o.userAgent != "" {
Expand Down Expand Up @@ -303,6 +305,14 @@ func WithRetryPredicate(predicate retry.Predicate) Option {
}
}

// WithRetryStatusCodes sets which http response codes will be retried.
func WithRetryStatusCodes(codes ...int) Option {
return func(o *options) error {
o.retryStatusCodes = codes
return nil
}
}

// WithFilter sets the filter querystring for HTTP operations.
func WithFilter(key string, value string) Option {
return func(o *options) error {
Expand Down

0 comments on commit 0e35c92

Please sign in to comment.