{"record":{"id":"ff93dc700a9ca89c","repo":"OpenBMB/ChatDev","slug":"memory-store-name-already-registered","errorCode":null,"errorMessage":"Memory store '{name}' already registered","messagePattern":"Memory store '(.+?)' already registered","errorType":"validation","errorClass":"RegistryError","httpStatus":null,"severity":"error","filePath":"runtime/node/agent/memory/registry.py","lineNumber":38,"sourceCode":"    summary: str | None = None\n\n\ndef _ensure_builtins_loaded() -> None:\n    global _BUILTINS_LOADED\n    if not _BUILTINS_LOADED:\n        import_module(\"runtime.node.agent.memory.builtin_stores\")\n        _BUILTINS_LOADED = True\n\n\ndef register_memory_store(\n    name: str,\n    *,\n    config_cls: Type[Any],\n    factory: Callable[[\"MemoryStoreConfig\"], \"MemoryBase\"],\n    summary: str | None = None,\n) -> None:\n    if name in memory_store_registry.names():\n        raise RegistryError(f\"Memory store '{name}' already registered\")\n    entry = MemoryStoreRegistration(name=name, config_cls=config_cls, factory=factory, summary=summary)\n    memory_store_registry.register(name, target=entry)\n    register_memory_store_schema(name, config_cls=config_cls, summary=summary)\n\n\ndef get_memory_store_registration(name: str) -> MemoryStoreRegistration:\n    _ensure_builtins_loaded()\n    entry: RegistryEntry = memory_store_registry.get(name)\n    registration = entry.load()\n    if not isinstance(registration, MemoryStoreRegistration):\n        raise RegistryError(f\"Entry '{name}' is not a MemoryStoreRegistration\")\n    return registration\n\n\ndef iter_memory_store_registrations() -> Dict[str, MemoryStoreRegistration]:\n    _ensure_builtins_loaded()\n    return {name: entry.load() for name, entry in memory_store_registry.items()}\n","sourceCodeStart":20,"sourceCodeEnd":56,"githubUrl":"https://github.com/OpenBMB/ChatDev/blob/4fb2db0ea90375ce1059f44fe03ffbd191a7a169/runtime/node/agent/memory/registry.py#L20-L56","documentation":"The memory store registry refuses duplicate names. register_memory_store raises RegistryError if the name already exists in memory_store_registry, keeping one factory per store type.","triggerScenarios":"Calling register_memory_store('file', ...) when 'file' is already a builtin, or a plugin registering a name another plugin took; also double module import.","commonSituations":"Custom plugins with generic names ('file', 'simple', 'blackboard') colliding with builtins; notebook re-runs; module imported under two paths.","solutions":["Namespace custom store names (e.g. 'myorg.vector_store')","Guard with `if name not in iter_memory_store_registrations(): ...`","Fix duplicate imports of the registering module"],"exampleFix":"# before\nregister_memory_store('file', config_cls=C, factory=f)\n\n# after\nif 'file' not in iter_memory_store_registrations():\n    register_memory_store('file', config_cls=C, factory=f)","handlingStrategy":"validation","validationCode":"from runtime.node.agent.memory.registry import iter_memory_store_registrations\nif 'mystore' not in iter_memory_store_registrations():\n    register_memory_store('mystore', config_cls=C, factory=f)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Namespace custom store names","Make registration idempotent"],"tags":["registry","duplicate","memory","plugin"],"backgroundTag":"duplicate-registry-registration","analyzedSha":"4fb2db0ea90375ce1059f44fe03ffbd191a7a169","analyzedAt":"2026-08-27T14:35:29.622Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}