flippercloud/flipper · error · ArgumentError

:min_timeout_ms must be >= 0 but was #{@min_timeout_ms.inspe

Error message

:min_timeout_ms must be >= 0 but was #{@min_timeout_ms.inspect}

What it means

Error ":min_timeout_ms must be >= 0 but was #{@min_timeout_ms.inspect}" thrown in flippercloud/flipper.

Source

Thrown at lib/flipper/cloud/telemetry/backoff_policy.rb:49

        #                 retry attempt.
        #   :randomization_factor - The randomization factor to use to create a range
        #                           around the retry interval.
        def initialize(options = {})
          @min_timeout_ms = options.fetch(:min_timeout_ms) {
            ENV.fetch("FLIPPER_BACKOFF_MIN_TIMEOUT_MS", MIN_TIMEOUT_MS).to_i
          }
          @max_timeout_ms = options.fetch(:max_timeout_ms) {
            ENV.fetch("FLIPPER_BACKOFF_MAX_TIMEOUT_MS", MAX_TIMEOUT_MS).to_i
          }
          @multiplier = options.fetch(:multiplier) {
            ENV.fetch("FLIPPER_BACKOFF_MULTIPLIER", MULTIPLIER).to_f
          }
          @randomization_factor = options.fetch(:randomization_factor) {
            ENV.fetch("FLIPPER_BACKOFF_RANDOMIZATION_FACTOR", RANDOMIZATION_FACTOR).to_f
          }

          unless @min_timeout_ms >= 0
            raise ArgumentError, ":min_timeout_ms must be >= 0 but was #{@min_timeout_ms.inspect}"
          end

          unless @max_timeout_ms >= 0
            raise ArgumentError, ":max_timeout_ms must be >= 0 but was #{@max_timeout_ms.inspect}"
          end

          unless @min_timeout_ms <= max_timeout_ms
            raise ArgumentError, ":min_timeout_ms (#{@min_timeout_ms.inspect}) must be <= :max_timeout_ms (#{@max_timeout_ms.inspect})"
          end

          @attempts = 0
        end

        # Public: Returns the next backoff interval in milliseconds.
        def next_interval
          interval = @min_timeout_ms * (@multiplier**@attempts)
          interval = add_jitter(interval, @randomization_factor)

View on GitHub (pinned to 1f86de3ec9)

Solutions

  1. Pass min_timeout_ms as a non-negative number (>= 0)
  2. Remove the option to use the default backoff policy values
  3. Fix the configuration value; a negative or nil min_timeout_ms is invalid

When it happens

Trigger: Thrown at lib/flipper/cloud/telemetry/backoff_policy.rb:49 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of flippercloud/flipper@1f86de3ec9 (2026-08-23). Data as JSON: /api/errors/8db03ea4db68a940. Report an issue: GitHub.