Skip to content

Commit 63b80ca

Browse files
committed
Update backoff
1 parent b36adec commit 63b80ca

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

lib/optimizely/cmab/cmab_client.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ module Optimizely
2929
class CmabRetryConfig
3030
# Configuration for retrying CMAB requests.
3131
# Contains parameters for maximum retries, backoff intervals, and multipliers.
32-
attr_reader :max_retries, :retry_delay, :max_backoff, :backoff_multiplier
32+
attr_reader :max_retries, :initial_backoff, :max_backoff, :backoff_multiplier
3333

34-
def initialize(max_retries: DEFAULT_MAX_RETRIES, retry_delay: DEFAULT_INITIAL_BACKOFF, max_backoff: DEFAULT_BACKOFF_MULTIPLIER, backoff_multiplier: DEFAULT_BACKOFF_MULTIPLIER)
34+
def initialize(max_retries: DEFAULT_MAX_RETRIES, initial_backoff: DEFAULT_INITIAL_BACKOFF, max_backoff: DEFAULT_BACKOFF_MULTIPLIER, backoff_multiplier: DEFAULT_BACKOFF_MULTIPLIER)
3535
@max_retries = max_retries
36-
@retry_delay = retry_delay
36+
@initial_backoff = initial_backoff
3737
@max_backoff = max_backoff
3838
@backoff_multiplier = backoff_multiplier
3939
end
@@ -151,15 +151,15 @@ def _do_fetch_with_retry(url, request_body, retry_config, timeout)
151151
# The variation ID from the response.
152152

153153
attempt = 0
154-
backoff = retry_config.retry_delay
154+
backoff = retry_config.initial_backoff
155155
begin
156-
_do_fetch(url, request_body, timeout)
156+
return _do_fetch(url, request_body, timeout)
157157
rescue => e
158158
if attempt < retry_config.max_retries
159159
@logger.log(Logger::INFO, "Retrying CMAB request (attempt #{attempt + 1}) after #{backoff} seconds...")
160160
Kernel.sleep(backoff)
161161
attempt += 1
162-
backoff = [backoff * retry_config.backoff_multiplier, retry_config.max_backoff].min
162+
backoff = [retry_config.initial_backoff * (retry_config.backoff_multiplier ** attempt), retry_config.max_backoff].min
163163
retry
164164
else
165165
@logger.log(Logger::ERROR, "Max retries exceeded for CMAB request: #{e.message}")

spec/cmab_client_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
describe Optimizely::DefaultCmabClient do
2424
let(:spy_logger) { spy('logger') }
25-
let(:retry_config) { Optimizely::CmabRetryConfig.new(max_retries: 3, retry_delay: 0.01, max_backoff: 1, backoff_multiplier: 2) }
25+
let(:retry_config) { Optimizely::CmabRetryConfig.new(max_retries: 3, initial_backoff: 0.01, max_backoff: 1, backoff_multiplier: 2) }
2626
let(:rule_id) { 'test_rule' }
2727
let(:user_id) { 'user123' }
2828
let(:attributes) { {'attr1': 'value1', 'attr2': 'value2'} }

0 commit comments

Comments
 (0)