microsoft/graphrag · error · ValueError

RetryConfig.type ' ' is not registered in the RetryFactory…

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.

Solutions

  1. Set RetryConfig.type to one of the strategies listed in the error message (e.g. immediate)
  2. Fix typos/outdated enum values in config sources
  3. 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

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


AI-assisted analysis of microsoft/graphrag@f40e9a26ce (2026-08-27). Data as JSON: /api/errors/140c5ce57387de40. Report an issue: GitHub.

Appendix: 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)