{"record":{"id":"7456c9db8881c2d4","repo":"microsoft/graphrag","slug":"max-retries-must-be-greater-than-1-for-immediate-r","errorCode":null,"errorMessage":"max_retries must be greater than 1 for Immediate retry.","messagePattern":"max_retries must be greater than 1 for Immediate retry\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"packages/graphrag-llm/graphrag_llm/config/retry_config.py","lineNumber":60,"sourceCode":"    def _validate_exponential_backoff_config(self) -> None:\n        \"\"\"Validate Exponential Backoff retry configuration.\"\"\"\n        if self.max_retries is not None and self.max_retries <= 1:\n            msg = \"max_retries must be greater than 1 for Exponential Backoff retry.\"\n            raise ValueError(msg)\n\n        if self.base_delay is not None and self.base_delay <= 1.0:\n            msg = \"base_delay must be greater than 1.0 for Exponential Backoff retry.\"\n            raise ValueError(msg)\n\n        if self.max_delay is not None and self.max_delay <= 1:\n            msg = \"max_delay must be greater than 1 for Exponential Backoff retry.\"\n            raise ValueError(msg)\n\n    def _validate_immediate_config(self) -> None:\n        \"\"\"Validate Immediate retry configuration.\"\"\"\n        if self.max_retries is not None and self.max_retries <= 1:\n            msg = \"max_retries must be greater than 1 for Immediate retry.\"\n            raise ValueError(msg)\n\n    @model_validator(mode=\"after\")\n    def _validate_model(self):\n        \"\"\"Validate the retry configuration based on its type.\"\"\"\n        if self.type == RetryType.ExponentialBackoff:\n            self._validate_exponential_backoff_config()\n        elif self.type == RetryType.Immediate:\n            self._validate_immediate_config()\n        return self\n","sourceCodeStart":42,"sourceCodeEnd":70,"githubUrl":"https://github.com/microsoft/graphrag/blob/f40e9a26ce62ba0b3fef8837d24aafdcc6e6c704/packages/graphrag-llm/graphrag_llm/config/retry_config.py#L42-L70","documentation":"RetryConfig validation requires max_retries > 1 for Immediate retry. Values of 1 or less are rejected even though the delay strategy is trivial.","triggerScenarios":"RetryConfig(type=RetryType.Immediate, max_retries=1) or 0/negative in settings.yaml.","commonSituations":"Trying to configure 'retry once' semantics; reducing retries during debugging and leaving max_retries=1 in the committed config.","solutions":["Set max_retries to at least 2","If you want no retries, omit the retry config / set it to None rather than max_retries=0"],"exampleFix":"# before\nRetryConfig(type=\"immediate\", max_retries=1)\n# after\nRetryConfig(type=\"immediate\", max_retries=2)","handlingStrategy":"validation","validationCode":"mr = retry_cfg.get(\"max_retries\")\nif retry_cfg.get(\"type\") == \"immediate\" and mr is not None and mr <= 1:\n    raise ValueError(\"max_retries must be > 1\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set max_retries >= 2 or omit the retry block entirely for no retries"],"tags":["retry","config-validation"],"backgroundTag":"invalid-config-value","analyzedSha":"f40e9a26ce62ba0b3fef8837d24aafdcc6e6c704","analyzedAt":"2026-08-27T11:16:29.677Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}