microsoft/graphrag · error · ValueError
RetryConfig.type '{strategy}' is not registered in the Retry
Error message
RetryConfig.type '{strategy}' is not registered in the RetryFactory. Registered strategies: {', '.join(retry_factory.keys())} What it means
create_retry throws this ValueError when RetryConfig.type is not present in the retry_factory registry. The match statement lazily registers built-in retry strategies (e.g. ImmediateRetry); any unrecognized type falls to the default branch. The message includes the list of valid strategies.
Source
Thrown at packages/graphrag-llm/graphrag_llm/retry/retry_factory.py:84
if strategy not in retry_factory:
match strategy:
case RetryType.ExponentialBackoff:
from graphrag_llm.retry.exponential_retry import ExponentialRetry
retry_factory.register(
strategy=RetryType.ExponentialBackoff,
initializer=ExponentialRetry,
)
case RetryType.Immediate:
from graphrag_llm.retry.immediate_retry import ImmediateRetry
retry_factory.register(
strategy=RetryType.Immediate,
initializer=ImmediateRetry,
)
case _:
msg = f"RetryConfig.type '{strategy}' is not registered in the RetryFactory. Registered strategies: {', '.join(retry_factory.keys())}"
raise ValueError(msg)
return retry_factory.create(strategy=strategy, init_args=init_args)
View on GitHub (pinned to f40e9a26ce)
Solutions
- Set RetryConfig.type to one of the strategies listed in the error message (e.g. immediate)
- Fix typos/outdated enum values in config sources
- Register custom retry strategies with retry_factory.register(strategy=..., initializer=...) before creating the retry instance
Example fix
# before retry = RetryConfig(type="expo") # after retry = RetryConfig(type=RetryType.Immediate)
Defensive patterns
Strategy: validation
Validate before calling
from graphrag_llm.retry import retry_factory
if retry_config.type not in retry_factory:
raise ValueError(f"Invalid retry type {retry_config.type!r}; valid: {list(retry_factory.keys())}") Type guard
from graphrag_llm.retry import retry_factory
def is_valid_retry(t: str) -> bool:
return t in retry_factory Try / catch
try:
r = create_retry(retry_config)
except ValueError as e:
if "not registered in the RetryFactory" in str(e):
raise
raise Prevention
- Use RetryType enum values in config
- Check retry_factory.keys() in config validation
- Register custom retry strategies at startup
When it happens
Trigger: Calling create_completion or create_embedding (or retry tests like test_retries) with RetryConfig.type set to a misspelled, unknown, or unregistered value.
Common situations: Config typos, enum renames across versions, or custom Retry implementations not registered via retry_factory.register(...).
Related errors
- MetricsConfig.store '{strategy}' is not registered in the Me
- MetricsConfig.writer '{strategy}' is not registered in the M
- RateLimitConfig.type '{strategy}' is not registered in the R
- TemplateEngineConfig.type '{strategy}' is not registered in
- max_retries must be greater than 1 for Exponential Backoff r
AI-assisted analysis of microsoft/graphrag@f40e9a26ce (2026-08-27).
Data as JSON: /api/errors/140c5ce57387de40.
Report an issue: GitHub.