Skip to content

Commit

Permalink
WAF and wafregional token final retries (#9826)
Browse files Browse the repository at this point in the history
  • Loading branch information
ryndaniels authored and nywilken committed Aug 21, 2019
1 parent 531759a commit 3da4988
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 7 deletions.
15 changes: 11 additions & 4 deletions aws/waf_token_handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,9 @@ func (t *WafRetryer) RetryWithToken(f withTokenFunc) (interface{}, error) {
defer awsMutexKV.Unlock("WafRetryer")

var out interface{}
var tokenOut *waf.GetChangeTokenOutput
err := resource.Retry(15*time.Minute, func() *resource.RetryError {
var err error
var tokenOut *waf.GetChangeTokenOutput

tokenOut, err = t.Connection.GetChangeToken(&waf.GetChangeTokenInput{})
if err != nil {
return resource.NonRetryableError(fmt.Errorf("Failed to acquire change token: %s", err))
Expand All @@ -39,8 +38,16 @@ func (t *WafRetryer) RetryWithToken(f withTokenFunc) (interface{}, error) {
}
return nil
})

return out, err
if isResourceTimeoutError(err) {
tokenOut, err = t.Connection.GetChangeToken(&waf.GetChangeTokenInput{})
if err == nil {
out, err = f(tokenOut.ChangeToken)
}
}
if err != nil {
return nil, fmt.Errorf("Error getting WAF change token: %s", err)
}
return out, nil
}

func newWafRetryer(conn *waf.WAF) *WafRetryer {
Expand Down
14 changes: 11 additions & 3 deletions aws/wafregionl_token_handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ func (t *WafRegionalRetryer) RetryWithToken(f withRegionalTokenFunc) (interface{
defer awsMutexKV.Unlock(t.Region)

var out interface{}
var tokenOut *waf.GetChangeTokenOutput
err := resource.Retry(15*time.Minute, func() *resource.RetryError {
var err error
var tokenOut *waf.GetChangeTokenOutput

tokenOut, err = t.Connection.GetChangeToken(&waf.GetChangeTokenInput{})
if err != nil {
Expand All @@ -41,8 +41,16 @@ func (t *WafRegionalRetryer) RetryWithToken(f withRegionalTokenFunc) (interface{
}
return nil
})

return out, err
if isResourceTimeoutError(err) {
tokenOut, err = t.Connection.GetChangeToken(&waf.GetChangeTokenInput{})
if err == nil {
out, err = f(tokenOut.ChangeToken)
}
}
if err != nil {
return nil, fmt.Errorf("Error getting WAF regional change token: %s", err)
}
return out, nil
}

func newWafRegionalRetryer(conn *wafregional.WAFRegional, region string) *WafRegionalRetryer {
Expand Down

0 comments on commit 3da4988

Please sign in to comment.