OpenBMB/ChatDev · error · RegistryError

Entry '{name}' is not an EdgeProcessorRegistration

Error message

Entry '{name}' is not an EdgeProcessorRegistration

What it means

The registry entry loaded for the requested edge processor type is not an EdgeProcessorRegistration, indicating a corrupted or foreign entry in the processor registry.

Source

Thrown at runtime/edge/processors/registry.py:56

) -> None:
    if name in edge_processor_registry.names():
        raise RegistryError(f"Edge processor type '{name}' already registered")
    entry = EdgeProcessorRegistration(
        name=name,
        config_cls=config_cls,
        processor_cls=processor_cls,
        summary=summary,
    )
    edge_processor_registry.register(name, target=entry)
    register_edge_processor_schema(name, config_cls=config_cls, summary=summary)


def get_edge_processor_registration(name: str) -> EdgeProcessorRegistration:
    _ensure_builtins_loaded()
    entry: RegistryEntry = edge_processor_registry.get(name)
    registration = entry.load()
    if not isinstance(registration, EdgeProcessorRegistration):
        raise RegistryError(f"Entry '{name}' is not an EdgeProcessorRegistration")
    return registration


def iter_edge_processor_registrations() -> Dict[str, EdgeProcessorRegistration]:
    _ensure_builtins_loaded()
    return {name: entry.load() for name, entry in edge_processor_registry.items()}


def build_edge_processor(
    processor_config: "EdgeProcessorConfig",
    context: ProcessorFactoryContext,
) -> "EdgePayloadProcessor[Any]":
    registration = get_edge_processor_registration(processor_config.type)
    processor_cls = registration.processor_cls
    if not processor_cls:
        raise RegistryError(f"Edge processor type '{processor_config.type}' does not provide an implementation")
    return processor_cls(processor_config.config, context)

View on GitHub (pinned to 4fb2db0ea9)

Solutions

  1. Register only through register_edge_processor
  2. Inspect edge_processor_registry.get(name).load() to see the actual object type
  3. Reinstall/align package versions so there is a single EdgeProcessorRegistration class
Defensive patterns

Strategy: try-catch

Validate before calling

from runtime.edge.processors.registry import iter_edge_processor_registrations
assert 'myproc' in iter_edge_processor_registrations()

Try / catch

try:
    proc = build_edge_processor(cfg, ctx)
except RegistryError as e:
    logger.error('bad processor registration: %s', e)
    raise

Prevention

When it happens

Trigger: Something wrote a non-EdgeProcessorRegistration object into edge_processor_registry under that name (bypassing register_edge_processor), and build_edge_processor/get_edge_processor_registration then loads it.

Common situations: Direct registry mutation by plugins, or version skew after upgrading the runtime where EdgeProcessorRegistration was redefined and isinstance checks fail across copies of the class.

Related errors


AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27). Data as JSON: /api/errors/1d3997d47e5b770e. Report an issue: GitHub.