global
def retry_with_backoff(config: {})
def retry_with_backoff(config: {}) retries = config[:runtime][:max_retries] || MAX_RETRIES begin yield rescue => e if retries > 0 ActiveGenie::Logger.warn({ code: :retry_with_backoff, message: "Retrying request after error: #{e.message}. Attempts remaining: #{retries}" }) retries -= 1 backoff_time = calculate_backoff(MAX_RETRIES - retries) sleep(backoff_time) retry else raise end end end