Merge 21d9c2e9b6fb897aee4cd044f982a5b3fafa5886 into b0535d8b40a30f9fd2b26b3ea2a49469dcb4d0a8

This commit is contained in:
Maxim Pogozhiy 2025-04-28 16:02:02 +00:00 committed by GitHub
commit 3d36371f7d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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"
} }