Skip to content

Commit 50471c9

Browse files
committed
Convert from Python
1 parent 1473c2e commit 50471c9

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

lib/optimizely/cmab/cmab_client.rb

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -151,20 +151,27 @@ def _do_fetch_with_retry(url, request_body, retry_config, timeout)
151151
# The variation ID from the response.
152152

153153
backoff = retry_config.initial_backoff
154-
begin
155-
_do_fetch(url, request_body, timeout)
156-
rescue StandardError => e
157-
if attempt < retry_config.max_retries
158-
backoff = [backoff * (retry_config.backoff_multiplier**(attempt + 1)), retry_config.max_backoff].min
159-
@logger.log(Logger::INFO, "Retrying CMAB request (attempt #{attempt + 1}) after #{backoff} seconds...")
160-
Kernel.sleep(backoff)
161-
attempt += 1
162-
retry
163-
else
164-
@logger.log(Logger::ERROR, "Max retries exceeded for CMAB request: #{e.message}")
165-
raise Optimizely::CmabFetchError, "CMAB decision fetch failed (#{e.message})."
154+
155+
(0..retry_config.max_retries).each do |attempt|
156+
begin
157+
variation_id = _do_fetch(url, request_body, timeout)
158+
return variation_id
159+
rescue StandardError => e
160+
if attempt < retry_config.max_retries
161+
@logger.log(Logger::INFO, "Retrying CMAB request (attempt #{attempt + 1}) after #{backoff} seconds...")
162+
Kernel.sleep(backoff)
163+
164+
backoff = [
165+
backoff * (retry_config.backoff_multiplier**(attempt + 1)),
166+
retry_config.max_backoff
167+
].min
168+
else
169+
@logger.log(Logger::ERROR, "Max retries exceeded for CMAB request: #{e.message}")
170+
raise Optimizely::CmabFetchError, "CMAB decision fetch failed (#{e.message})."
171+
end
166172
end
167173
end
174+
168175
error_message = Optimizely::Helpers::Constants::CMAB_FETCH_FAILED % 'Exhausted all retries for CMAB request.'
169176
@logger.log(Logger::ERROR, error_message)
170177
raise Optimizely::CmabFetchError, error_message

0 commit comments

Comments
 (0)