vllm-project/vllm · error · ValueError

Unsupported connector type: {connector_name}

Error message

Unsupported connector type: {connector_name}

What it means

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.

Source

Thrown at vllm/distributed/ec_transfer/ec_connector/factory.py:71

        # - Should only be used inside the Scheduler class
        # Worker connector:
        # - Co-locate with worker process
        return connector_cls(config, role)

    @classmethod
    def get_connector_class(
        cls, ec_transfer_config: "ECTransferConfig"
    ) -> type[ECConnectorBase]:
        """Get the connector class by name."""
        connector_name = ec_transfer_config.ec_connector
        if connector_name is None:
            raise ValueError("EC connect must not be None")
        elif connector_name in cls._registry:
            connector_cls = cls._registry[connector_name]()
        else:
            connector_module_path = ec_transfer_config.ec_connector_module_path
            if connector_module_path is None:
                raise ValueError(f"Unsupported connector type: {connector_name}")
            connector_module = importlib.import_module(connector_module_path)
            connector_cls = getattr(connector_module, connector_name)
        return connector_cls


# Register various connectors here.
# The registration should not be done in each individual file, as we want to
# only load the files corresponding to the current connector.

ECConnectorFactory.register_connector(
    "ECExampleConnector",
    "vllm.distributed.ec_transfer.ec_connector.example_connector",
    "ECExampleConnector",
)

ECConnectorFactory.register_connector(
    "ECCPUConnector",
    "vllm.distributed.ec_transfer.ec_connector.cpu.connector",

View on GitHub (pinned to c794754062)

Solutions

  1. Fix the name to exactly match a registered connector (check ECConnectorFactory._registry keys)

Example fix

# before
ECTransferConfig(ec_connector="MyConnector")  # not registered, no module path
# ValueError: Unsupported connector type: MyConnector

# after
ECTransferConfig(
    ec_connector="MyConnector",
    ec_connector_module_path="my_pkg.ec.MyConnector",
)
# or register it:
ECConnectorFactory.register_connector("MyConnector", "my_pkg.ec", "MyConnector")
Defensive patterns

Strategy: validation

Validate before calling

name = ec_transfer_config.ec_connector
registered = name in ECConnectorFactory._registry
has_path = ec_transfer_config.ec_connector_module_path is not None
assert registered or has_path, f"connector '{name}' is neither registered nor importable"

Type guard

def connector_resolvable(ec_transfer_config) -> bool:
    n = ec_transfer_config.ec_connector
    return n is not None and (
        n in ECConnectorFactory._registry
        or ec_transfer_config.ec_connector_module_path is not None
    )

Prevention

When it happens

Trigger: 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).

Common situations: 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.

Related errors


AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14). Data as JSON: /api/errors/dc4ff2e9a9065235. Report an issue: GitHub.