OpenBMB/ChatDev · error · RegistryError
Edge processor type '{name}' already registered
Error message
Edge processor type '{name}' already registered What it means
The edge processor type registry refuses duplicate registration. register_edge_processor raises when the name already exists, ensuring one processor implementation per type name.
Source
Thrown at runtime/edge/processors/registry.py:40
_BUILTINS_LOADED = False
def _ensure_builtins_loaded() -> None:
global _BUILTINS_LOADED
if not _BUILTINS_LOADED:
import_module("runtime.edge.processors.builtin_types")
_BUILTINS_LOADED = True
def register_edge_processor(
name: str,
*,
config_cls: Type["EdgeProcessorTypeConfig"],
processor_cls: Type["EdgePayloadProcessor[Any]"],
summary: str | None = None,
) -> 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
View on GitHub (pinned to 4fb2db0ea9)
Solutions
- Use a namespaced unique name for custom processors
- Guard with `if name not in iter_edge_processor_registrations(): ...`
- Ensure the plugin module is imported exactly once (fix duplicate package paths)
Example fix
# before
register_edge_processor('transform', config_cls=C, processor_cls=P)
# after
if 'transform' not in iter_edge_processor_registrations():
register_edge_processor('transform', config_cls=C, processor_cls=P) Defensive patterns
Strategy: validation
Validate before calling
from runtime.edge.processors.registry import iter_edge_processor_registrations
if 'myproc' not in iter_edge_processor_registrations():
register_edge_processor('myproc', config_cls=C, processor_cls=P) Prevention
- Namespace plugin names
- Guard registrations to be idempotent
When it happens
Trigger: Calling register_edge_processor('name', ...) twice, or a plugin registering a processor whose name collides with a builtin or with another plugin's name.
Common situations: Double imports of the registering module (two sys.path aliases), notebook re-runs without kernel restart, or unnamespaced names like 'transform' colliding with builtins.
Related errors
- Edge condition type '{name}' already registered
- Memory store '{name}' already registered
- Entry '{name}' is not a BaseConfig subclass
- Entry '{name}' is not an EdgeConditionRegistration
- Entry '{name}' is not an EdgeProcessorRegistration
AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27).
Data as JSON: /api/errors/b74a800076a2d1c1.
Report an issue: GitHub.