mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-07-23 00:47:51 +00:00
33 lines
664 B
Ruby
33 lines
664 B
Ruby
# frozen_string_literal: true
|
|
|
|
module BitbucketServer
|
|
module RetryWithDelay
|
|
extend ActiveSupport::Concern
|
|
|
|
MAXIMUM_DELAY = 20
|
|
|
|
def retry_with_delay(&block)
|
|
run_retry_with_delay(&block)
|
|
end
|
|
|
|
private
|
|
|
|
def run_retry_with_delay
|
|
response = yield
|
|
|
|
if response.code == 429 && response.headers.has_key?('retry-after')
|
|
retry_after = response.headers['retry-after'].to_i
|
|
|
|
if retry_after <= MAXIMUM_DELAY
|
|
logger.info(message: "Retrying in #{retry_after} seconds due to 429 Too Many Requests")
|
|
sleep retry_after
|
|
|
|
response = yield
|
|
end
|
|
end
|
|
|
|
response
|
|
end
|
|
end
|
|
end
|