{"record":{"id":"afbb410d01d64a5e","repo":"sgl-project/sglang","slug":"enable-dsa-cache-layer-split-is-not-supported-on","errorCode":null,"errorMessage":"--enable-dsa-cache-layer-split is not supported on decode workers. This flag is a prefill-CP optimization; decode receives full cache shards through PD transfer.","messagePattern":"--enable-dsa-cache-layer-split is not supported on decode workers\\. This flag is a prefill-CP optimization; decode receives full cache shards through PD transfer\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/server_args.py","lineNumber":5928,"sourceCode":"\n                    import torch\n\n                    major, _ = torch.cuda.get_device_capability()\n                    self._set_default_dsa_kv_cache_dtype(\n                        major, resolved_view(self).quantization\n                    )\n                    self._set_default_dsa_backends(major)\n\n                if cfg.enable_prefill_cp:\n                    assert (\n                        cfg.disaggregation_mode != \"decode\"\n                    ), \"CP is only supported for prefill when PD disaggregation, please remove --enable-prefill-cp.\"\n                if (\n                    cfg.enable_dsa_cache_layer_split\n                    and cfg.disaggregation_mode != \"prefill\"\n                ):\n                    if cfg.disaggregation_mode == \"decode\":\n                        raise ValueError(\n                            \"--enable-dsa-cache-layer-split is not supported on \"\n                            \"decode workers. This flag is a prefill-CP \"\n                            \"optimization; decode receives full cache shards \"\n                            \"through PD transfer.\"\n                        )\n                    raise ValueError(\n                        \"--enable-dsa-cache-layer-split is only supported on PD \"\n                        \"prefill workers. Non-PD workers also run decode and \"\n                        \"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).\"","sourceCodeStart":5910,"sourceCodeEnd":5946,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/server_args.py#L5910-L5946","documentation":"--enable-dsa-cache-layer-split is a prefill context-parallel optimization for PD (prefill/decode disaggregated) deployments; decode workers receive full cache shards via PD transfer, so the flag is rejected on decode workers.","triggerScenarios":"Launching with --disaggregation-mode decode together with --enable-dsa-cache-layer-split.","commonSituations":"Reusing the same flag set for prefill and decode pods in a PD cluster; deployment templates that inject DSA flags cluster-wide.","solutions":["Remove --enable-dsa-cache-layer-split from decode worker launch args","Keep the flag only on PD prefill workers","Split your prefill/decode launch configs so flags are role-specific"],"exampleFix":"# before (decode worker)\n--disaggregation-mode decode --enable-dsa-cache-layer-split\n# after\n--disaggregation-mode decode","handlingStrategy":"validation","validationCode":"mode = args.get(\"disaggregation_mode\")\nif args.get(\"enable_dsa_cache_layer_split\") and mode == \"decode\":\n    args[\"enable_dsa_cache_layer_split\"] = False  # decode workers must not set it","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Render launch args per PD role (prefill vs decode) from separate templates","Never apply prefill-only optimization flags cluster-wide"],"tags":["dsa","pd-disaggregation","config-validation"],"backgroundTag":"role-specific-flag-misuse","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}