class Fluent::PluginHelper::RetryState::RetryStateMachine
def initialize(title, wait, timeout, forever, max_steps, randomize, randomize_width, secondary, secondary_threshold)
def initialize(title, wait, timeout, forever, max_steps, randomize, randomize_width, secondary, secondary_threshold) @title = title @start = current_time @steps = 0 @next_time = nil # should be initialized for first retry by child class @timeout = timeout @timeout_at = @start + timeout @current = :primary if randomize_width < 0 || randomize_width > 0.5 raise "BUG: randomize_width MUST be between 0 and 0.5" end @randomize = randomize @randomize_width = randomize_width @forever = forever @max_steps = max_steps @secondary = secondary @secondary_threshold = secondary_threshold if @secondary raise "BUG: secondary_transition_threshold MUST be between 0 and 1" if @secondary_threshold <= 0 || @secondary_threshold >= 1 max_retry_timeout = timeout if max_steps timeout_by_max_steps = calc_max_retry_timeout(max_steps) max_retry_timeout = timeout_by_max_steps if timeout_by_max_steps < max_retry_timeout end @secondary_transition_at = @start + max_retry_timeout * @secondary_threshold @secondary_transition_steps = nil end end