{"record":{"id":"8db03ea4db68a940","repo":"flippercloud/flipper","slug":"min-timeout-ms-must-be-0-but-was-min-timeou","errorCode":null,"errorMessage":":min_timeout_ms must be >= 0 but was #{@min_timeout_ms.inspect}","messagePattern":":min_timeout_ms must be >= 0 but was #(.+?)","errorType":"exception","errorClass":"ArgumentError","httpStatus":null,"severity":"error","filePath":"lib/flipper/cloud/telemetry/backoff_policy.rb","lineNumber":49,"sourceCode":"        #                 retry attempt.\n        #   :randomization_factor - The randomization factor to use to create a range\n        #                           around the retry interval.\n        def initialize(options = {})\n          @min_timeout_ms = options.fetch(:min_timeout_ms) {\n            ENV.fetch(\"FLIPPER_BACKOFF_MIN_TIMEOUT_MS\", MIN_TIMEOUT_MS).to_i\n          }\n          @max_timeout_ms = options.fetch(:max_timeout_ms) {\n            ENV.fetch(\"FLIPPER_BACKOFF_MAX_TIMEOUT_MS\", MAX_TIMEOUT_MS).to_i\n          }\n          @multiplier = options.fetch(:multiplier) {\n            ENV.fetch(\"FLIPPER_BACKOFF_MULTIPLIER\", MULTIPLIER).to_f\n          }\n          @randomization_factor = options.fetch(:randomization_factor) {\n            ENV.fetch(\"FLIPPER_BACKOFF_RANDOMIZATION_FACTOR\", RANDOMIZATION_FACTOR).to_f\n          }\n\n          unless @min_timeout_ms >= 0\n            raise ArgumentError, \":min_timeout_ms must be >= 0 but was #{@min_timeout_ms.inspect}\"\n          end\n\n          unless @max_timeout_ms >= 0\n            raise ArgumentError, \":max_timeout_ms must be >= 0 but was #{@max_timeout_ms.inspect}\"\n          end\n\n          unless @min_timeout_ms <= max_timeout_ms\n            raise ArgumentError, \":min_timeout_ms (#{@min_timeout_ms.inspect}) must be <= :max_timeout_ms (#{@max_timeout_ms.inspect})\"\n          end\n\n          @attempts = 0\n        end\n\n        # Public: Returns the next backoff interval in milliseconds.\n        def next_interval\n          interval = @min_timeout_ms * (@multiplier**@attempts)\n          interval = add_jitter(interval, @randomization_factor)\n","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/flippercloud/flipper/blob/1f86de3ec91521585b156445e156642938b19cb0/lib/flipper/cloud/telemetry/backoff_policy.rb#L31-L67","documentation":"Error \":min_timeout_ms must be >= 0 but was #{@min_timeout_ms.inspect}\" thrown in flippercloud/flipper.","triggerScenarios":"Thrown at lib/flipper/cloud/telemetry/backoff_policy.rb:49 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass min_timeout_ms as a non-negative number (>= 0)","Remove the option to use the default backoff policy values","Fix the configuration value; a negative or nil min_timeout_ms is invalid"],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"1f86de3ec91521585b156445e156642938b19cb0","analyzedAt":"2026-08-23T04:36:09.896Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}