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

  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.