{"record":{"id":"82f33f900579de6b","repo":"sgl-project/sglang","slug":"enable-dsa-cache-layer-split-currently-only-supp","errorCode":null,"errorMessage":"--enable-dsa-cache-layer-split currently only supports the mooncake transfer backend (mooncake / mooncake_tcp). Got --disaggregation-transfer-backend {cfg.disaggregation_transfer_backend!r}. mori/nixl support will be added later by the community.","messagePattern":"--enable-dsa-cache-layer-split currently only supports the mooncake transfer backend \\(mooncake / mooncake_tcp\\)\\. Got --disaggregation-transfer-backend (.+?)\\. mori/nixl support will be added later by the community\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/server_args.py","lineNumber":5955,"sourceCode":"                        \"require ordinary local decode cache semantics.\"\n                    )\n                if cfg.enable_dsa_cache_layer_split and (\n                    not cfg.enable_prefill_cp or cfg.cp_strategy != \"interleave\"\n                ):\n                    raise ValueError(\n                        \"--enable-dsa-cache-layer-split requires \"\n                        \"--enable-prefill-cp and --cp-strategy interleave \"\n                        \"(or legacy --enable-nsa-prefill-context-parallel with \"\n                        \"--nsa-prefill-cp-mode round-robin-split).\"\n                    )\n                # Layer split relies on the mooncake all-CP-rank KV/indexer\n                # transfer path. mori/nixl support is a temporary limitation\n                # and will be added later by the community.\n                if (\n                    cfg.enable_dsa_cache_layer_split\n                    and cfg.disaggregation_transfer_backend != \"mooncake\"\n                ):\n                    raise ValueError(\n                        \"--enable-dsa-cache-layer-split currently only supports \"\n                        \"the mooncake transfer backend (mooncake / mooncake_tcp). \"\n                        f\"Got --disaggregation-transfer-backend \"\n                        f\"{cfg.disaggregation_transfer_backend!r}. mori/nixl \"\n                        \"support will be added later by the community.\"\n                    )\n                if cfg.enable_dsa_cache_layer_split and cfg.pp_size > 1:\n                    raise ValueError(\n                        \"--enable-dsa-cache-layer-split is not supported with \"\n                        \"pipeline parallelism (pp_size > 1) yet. It requires \"\n                        \"prefill context parallelism, and CP + PP has not been \"\n                        \"validated for this feature.\"\n                    )\n\n            else:\n                # DeepSeek V3/R1/V3.1\n                if cfg.cuda_graph_config.prefill.backend != Backend.DISABLED:\n                    logger.info(\"Piecewise CUDA graph is enabled, use MLA for prefill.\")","sourceCodeStart":5937,"sourceCodeEnd":5973,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/server_args.py#L5937-L5973","documentation":"DSA cache-layer-split relies on the mooncake all-CP-rank KV/indexer transfer path, so it currently only works with the mooncake transfer backend (mooncake / mooncake_tcp). mori and nixl backends are rejected until support is added.","triggerScenarios":"Running a PD prefill worker with --enable-dsa-cache-layer-split and --disaggregation-transfer-backend set to 'mori', 'nixl', or anything other than 'mooncake'.","commonSituations":"Clusters standardized on nixl/mori transfer backends trying the DSA optimization; forgetting to switch the backend when adopting the flag.","solutions":["Set --disaggregation-transfer-backend mooncake (or mooncake_tcp)","Remove --enable-dsa-cache-layer-split if you must stay on mori/nixl","Watch for community-added mori/nixl support in later releases"],"exampleFix":"# before\n--enable-dsa-cache-layer-split --disaggregation-transfer-backend nixl\n# after\n--enable-dsa-cache-layer-split --disaggregation-transfer-backend mooncake","handlingStrategy":"validation","validationCode":"if args.get(\"enable_dsa_cache_layer_split\") and args.get(\"disaggregation_transfer_backend\", \"mooncake\") != \"mooncake\":\n    args[\"disaggregation_transfer_backend\"] = \"mooncake\"  # or fail fast","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pin the transfer backend explicitly rather than relying on cluster defaults","Document backend limitations per optimization flag in your deployment runbook"],"tags":["dsa","pd-disaggregation","transfer-backend","config-validation"],"backgroundTag":"unsupported-backend-combination","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}