Route53 Exponential backoff

pull/6205/head
Maxim Pogozhiy 1 month ago
parent f981c782bb
commit 3a5df3544b

@ -323,7 +323,6 @@ aws_rest() {
_debug2 CredentialScope "$CredentialScope" _debug2 CredentialScope "$CredentialScope"
StringToSign="$Algorithm\n$RequestDate\n$CredentialScope\n$HashedCanonicalRequest" StringToSign="$Algorithm\n$RequestDate\n$CredentialScope\n$HashedCanonicalRequest"
_debug2 StringToSign "$StringToSign" _debug2 StringToSign "$StringToSign"
kSecret="AWS4$AWS_SECRET_ACCESS_KEY" kSecret="AWS4$AWS_SECRET_ACCESS_KEY"
@ -361,20 +360,45 @@ aws_rest() {
url="$AWS_URL/$ep?$qsr" url="$AWS_URL/$ep?$qsr"
fi fi
if [ "$mtd" = "GET" ]; then # Exponential backoff
response="$(_get "$url")" max_retries=10
else attempt=1
response="$(_post "$data" "$url")" base_sleep=5
fi
_ret="$?" while [ "$attempt" -le "$max_retries" ]; do
_debug2 response "$response" if [ "$mtd" = "GET" ]; then
if [ "$_ret" = "0" ]; then response="$(_get "$url")"
if _contains "$response" "<ErrorResponse"; then else
_err "Response error:$response" response="$(_post "$data" "$url")"
return 1
fi fi
fi
_ret="$?"
_debug2 response "$response"
if [ "$_ret" = "0" ]; then
if _contains "$response" "<ErrorResponse"; then
_err "Response error:$response"
if echo "$response" | grep -Eq "<Code>(Throttling|RequestThrottled|RateLimit)</Code>|<Message>Rate exceeded</Message>"; then
_err "AWS throttling encountered, attempt $attempt"
attempt=$(_math "$attempt" + 1)
if [ "$attempt" -le "$max_retries" ]; then
sleep_time=$(_math "$base_sleep" "*" 2 "^" "$((attempt - 1))")
_err "Sleeping $sleep_time seconds before retry..."
_sleep "$sleep_time"
continue
else
_err "Max retries ($max_retries) reached. Giving up."
return 1
fi
else
return 1
fi
fi
else
return "$_ret"
fi
break
done
return "$_ret" return "$_ret"
} }

Loading…
Cancel
Save