{"record":{"id":"778540a40e276c7d","repo":"vllm-project/vllm","slug":"invalid-moriio-backend-backend-r-in-kv-connector","errorCode":null,"errorMessage":"Invalid MoRIIO backend {backend!r} in kv_connector_extra_config; must be one of 'rdma' or 'xgmi'.","messagePattern":"Invalid MoRIIO backend (.+?) in kv_connector_extra_config; must be one of 'rdma' or 'xgmi'\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"vllm/distributed/kv_transfer/kv_connector/v1/moriio/moriio_common.py","lineNumber":311,"sourceCode":"        # TODO : merge notify_port and handshake_port to simplify port management\n        #        supports non-contiguous ports\n        assert vllm_config.kv_transfer_config is not None, (\n            \"kv_transfer_config must be set for MoRIIOConnector\"\n        )\n        _warn_deprecated_env_vars()\n        kv_transfer_config = vllm_config.kv_transfer_config\n        extra_config = kv_transfer_config.kv_connector_extra_config\n        tp_rank = get_tensor_model_parallel_rank()\n        # Fold the global data_parallel_rank back to [0, dp_size_local) for\n        # per-node port allocation (handles the external-DP sentinel).\n        pc = vllm_config.parallel_config\n        dp_rank = fold_local_rank(pc.data_parallel_rank, pc.data_parallel_size_local)\n        base_notify_port = int(extra_config[\"notify_port\"])\n        tp_size = get_tensor_model_parallel_world_size()\n        port_offset = get_port_offset(dp_rank, tp_rank)\n        backend = str(extra_config.get(\"backend\", \"rdma\")).lower()\n        if backend not in (\"rdma\", \"xgmi\"):\n            raise ValueError(\n                f\"Invalid MoRIIO backend {backend!r} in kv_connector_extra_config; \"\n                \"must be one of 'rdma' or 'xgmi'.\"\n            )\n\n        transfer_timeout = float(\n            extra_config.get(\n                \"transfer_timeout\", MoRIIOConstants.DEFAULT_TRANSFER_TIMEOUT\n            )\n        )\n        defer_timeout = float(\n            extra_config.get(\"defer_timeout\", MoRIIOConstants.DEFAULT_DEFER_TIMEOUT)\n        )\n\n        return cls(\n            local_ip=resolve_host_ip(extra_config),\n            local_kv_port=get_open_port(),\n            proxy_ip=extra_config.get(\"proxy_ip\", \"\"),\n            local_ping_port=get_open_port(),","sourceCodeStart":293,"sourceCodeEnd":329,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/vllm/distributed/kv_transfer/kv_connector/v1/moriio/moriio_common.py#L293-L329","documentation":"MoRIIO connector config validates the 'backend' field of kv_connector_extra_config: after str(...).lower() it must be 'rdma' or 'xgmi' (xgmi = intra-node GPU-to-GPU over AMD GMI / NVLink-class links). Any other spelling or value raises ValueError at worker init.","triggerScenarios":"kv_connector_extra_config={'backend': 'TCP'}, 'ib', 'nvlink', or a typo like 'Rdma ' that lower() does not fix (trailing space is not stripped).","commonSituations":"Copying NIXL/Mooncake vocabulary ('tcp') into MoRIIO config; assuming NVLink is spelled out; trailing whitespace from YAML templates.","solutions":["Use \"backend\": \"rdma\" for inter-node RDMA or \"backend\": \"xgmi\" for intra-node transfers","Remove the key entirely — it defaults to 'rdma'","Check for stray whitespace/case in the YAML value (only case is normalized, whitespace is not)"],"exampleFix":"# before\nkv_connector_extra_config={\"backend\": \"tcp\", \"notify_port\": 5555}\n\n# after\nkv_connector_extra_config={\"backend\": \"rdma\", \"notify_port\": 5555}","handlingStrategy":"type-guard","validationCode":"backend = str(extra_config.get(\"backend\", \"rdma\")).lower()\nif backend not in (\"rdma\", \"xgmi\"):\n    raise ValueError(\"MoRIIO backend must be 'rdma' or 'xgmi'\")","typeGuard":"def is_valid_moriio_backend(v) -> bool:\n    return isinstance(v, str) and v.strip().lower() in (\"rdma\", \"xgmi\")","tryCatchPattern":null,"preventionTips":["Omit 'backend' when RDMA is intended (it is the default)","Strip whitespace in templated YAML values; only case is normalized","Do not reuse NIXL/Mooncake backend vocabularies for MoRIIO"],"tags":["moriio","kv-transfer","config","rdma","validation"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}