module Gitlab::Triage::Retryable

Constants

BACK_OFF_SECONDS
MAX_RETRIES

Attributes

tries[RW]

Public Instance Methods

execute_with_retry(exception_types: [StandardError], backoff_exceptions: []) { || ... } click to toggle source
# File lib/gitlab/triage/retryable.rb, line 9
def execute_with_retry(exception_types: [StandardError], backoff_exceptions: [])
  @tries = 0

  until maximum_retries_reached?
    begin
      @tries += 1
      return yield
    rescue *exception_types
      raise if maximum_retries_reached?
    rescue *backoff_exceptions
      raise if maximum_retries_reached?

      sleep(BACK_OFF_SECONDS)
    end
  end
end

Private Instance Methods

maximum_retries_reached?() click to toggle source
# File lib/gitlab/triage/retryable.rb, line 28
def maximum_retries_reached?
  tries == MAX_RETRIES
end