{"record":{"id":"dc4ff2e9a9065235","repo":"vllm-project/vllm","slug":"unsupported-connector-type-connector-name","errorCode":null,"errorMessage":"Unsupported connector type: {connector_name}","messagePattern":"Unsupported connector type: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"vllm/distributed/ec_transfer/ec_connector/factory.py","lineNumber":71,"sourceCode":"        # - Should only be used inside the Scheduler class\n        # Worker connector:\n        # - Co-locate with worker process\n        return connector_cls(config, role)\n\n    @classmethod\n    def get_connector_class(\n        cls, ec_transfer_config: \"ECTransferConfig\"\n    ) -> type[ECConnectorBase]:\n        \"\"\"Get the connector class by name.\"\"\"\n        connector_name = ec_transfer_config.ec_connector\n        if connector_name is None:\n            raise ValueError(\"EC connect must not be None\")\n        elif connector_name in cls._registry:\n            connector_cls = cls._registry[connector_name]()\n        else:\n            connector_module_path = ec_transfer_config.ec_connector_module_path\n            if connector_module_path is None:\n                raise ValueError(f\"Unsupported connector type: {connector_name}\")\n            connector_module = importlib.import_module(connector_module_path)\n            connector_cls = getattr(connector_module, connector_name)\n        return connector_cls\n\n\n# Register various connectors here.\n# The registration should not be done in each individual file, as we want to\n# only load the files corresponding to the current connector.\n\nECConnectorFactory.register_connector(\n    \"ECExampleConnector\",\n    \"vllm.distributed.ec_transfer.ec_connector.example_connector\",\n    \"ECExampleConnector\",\n)\n\nECConnectorFactory.register_connector(\n    \"ECCPUConnector\",\n    \"vllm.distributed.ec_transfer.ec_connector.cpu.connector\",","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/vllm/distributed/ec_transfer/ec_connector/factory.py#L53-L89","documentation":"When ec_connector names a class that is not in the factory registry, vLLM falls back to importing it from ec_transfer_config.ec_connector_module_path. If that module path is also None, the connector cannot be located and get_connector_class raises ValueError('Unsupported connector type: ...'). So this fires only for unregistered names with no module path supplied.","triggerScenarios":"Setting ec_connector='MyCustomConnector' without registering it via ECConnectorFactory.register_connector and without setting ec_connector_module_path; typos in the connector name (falls through the registry lookup and has no module path to rescue it).","commonSituations":"Custom/third-party EC connectors; renaming a connector class without updating config strings; configs copied between versions where a built-in name was removed from the registry.","solutions":["Fix the name to exactly match a registered connector (check ECConnectorFactory._registry keys)"],"exampleFix":"# before\nECTransferConfig(ec_connector=\"MyConnector\")  # not registered, no module path\n# ValueError: Unsupported connector type: MyConnector\n\n# after\nECTransferConfig(\n    ec_connector=\"MyConnector\",\n    ec_connector_module_path=\"my_pkg.ec.MyConnector\",\n)\n# or register it:\nECConnectorFactory.register_connector(\"MyConnector\", \"my_pkg.ec\", \"MyConnector\")","handlingStrategy":"validation","validationCode":"name = ec_transfer_config.ec_connector\nregistered = name in ECConnectorFactory._registry\nhas_path = ec_transfer_config.ec_connector_module_path is not None\nassert registered or has_path, f\"connector '{name}' is neither registered nor importable\"","typeGuard":"def connector_resolvable(ec_transfer_config) -> bool:\n    n = ec_transfer_config.ec_connector\n    return n is not None and (\n        n in ECConnectorFactory._registry\n        or ec_transfer_config.ec_connector_module_path is not None\n    )","tryCatchPattern":null,"preventionTips":["Cross-check connector names against ECConnectorFactory._registry keys","For custom connectors set ec_connector_module_path or register them at startup","Treat config renames as breaking changes and grep configs when upgrading"],"tags":["configuration","ec-transfer","factory","unknown-class"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}