{"record":{"id":"194d865267b869e2","repo":"sgl-project/sglang","slug":"unsupported-transport-mode-transport-mode","errorCode":null,"errorMessage":"Unsupported transport_mode: {transport_mode}","messagePattern":"Unsupported transport_mode: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/disaggregation/encoder/receiver.py","lineNumber":2674,"sourceCode":"    dtype: Optional[torch.dtype] = None,\n    hf_config: Optional[PretrainedConfig] = None,\n    pp_rank: Optional[int] = None,\n    tp_rank: Optional[int] = None,\n    tp_group: Optional[GroupCoordinator] = None,\n    scheduler: Optional[\"Scheduler\"] = None,\n    transport_mode: Optional[str] = None,\n    encode_urls: Optional[List[str]] = None,\n):\n    if transport_mode is None:\n        transport_mode = envs.SGLANG_ENCODER_MM_RECEIVER_MODE.get()\n        logger.debug(f\"MMReceiver transport_mode from env: {transport_mode}\")\n\n    _validate_transport_mode(transport_mode, encode_urls or get_disagg().encoder_urls)\n    logger.info(f\"EPD MMReceiver: using transport_mode={transport_mode}\")\n\n    receiver_cls = _MM_RECEIVER_BY_MODE.get(transport_mode)\n    if receiver_cls is None:\n        raise ValueError(f\"Unsupported transport_mode: {transport_mode}\")\n    return receiver_cls(\n        server_args,\n        dtype=dtype,\n        hf_config=hf_config,\n        pp_rank=pp_rank,\n        tp_rank=tp_rank,\n        tp_group=tp_group,\n        scheduler=scheduler,\n        encode_urls=encode_urls,\n    )\n","sourceCodeStart":2656,"sourceCodeEnd":2685,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/disaggregation/encoder/receiver.py#L2656-L2685","documentation":"Raised by the MMReceiver factory when transport_mode is not a key in _MM_RECEIVER_BY_MODE (only 'grpc' and 'http' are registered). This is the final guard after transport-mode/URL validation, catching unrecognized mode strings.","triggerScenarios":"Passing transport_mode values like 'zmq', 'tcp', 'HTTPS' (case mismatch), or None-with-typo to the receiver factory; typically derived from SGLANG_ENCODER_MM_RECEIVER_MODE env var or an explicit argument.","commonSituations":"Typos or case errors in SGLANG_ENCODER_MM_RECEIVER_MODE; assuming a transport mode exists (e.g. 'mooncake' or 'rdma') that is not a receiver mode; stale docs or copied configs naming a removed mode.","solutions":["Set transport_mode / SGLANG_ENCODER_MM_RECEIVER_MODE to exactly 'grpc' or 'http'.","Check for typos, casing, and whitespace in the env var value.","Unset the env var to let the mode be inferred from encoder URL schemes."],"exampleFix":"# before\nSGLANG_ENCODER_MM_RECEIVER_MODE=HTTP\n# after\nSGLANG_ENCODER_MM_RECEIVER_MODE=http","handlingStrategy":"validation","validationCode":"VALID_MODES = {\"grpc\", \"http\"}\nmode = (transport_mode or \"\").strip().lower()\nassert mode in VALID_MODES, f\"transport_mode must be one of {VALID_MODES}, got {transport_mode!r}\"","typeGuard":"def is_valid_transport_mode(mode) -> bool:\n    return isinstance(mode, str) and mode.strip().lower() in {\"grpc\", \"http\"}","tryCatchPattern":"try:\n    receiver = create_mm_receiver(server_args, transport_mode=mode)\nexcept ValueError as e:\n    raise SystemExit(f\"bad SGLANG_ENCODER_MM_RECEIVER_MODE: {e}\") from e","preventionTips":["Normalize the env var (strip + lower) before use.","Fail fast at config parse time on unknown transport modes.","Unset the env var to let mode be inferred from encoder URLs when unsure."],"tags":["configuration","transport-mode","env-var","receiver"],"backgroundTag":"invalid-config-value","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}