{"record":{"id":"e8a25063766a321c","repo":"sgl-project/sglang","slug":"disaggregation-decode-enable-radix-cache-is-inco","errorCode":null,"errorMessage":"--disaggregation-decode-enable-radix-cache is incompatible with --enable-hisparse","messagePattern":"--disaggregation-decode-enable-radix-cache is incompatible with --enable-hisparse","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/arg_groups/pd_disaggregation_hook.py","lineNumber":77,"sourceCode":"                \"PD decode DCP requires --disaggregation-transfer-backend \"\n                \"mooncake, nixl, or fake for synthetic benchmarking, got \"\n                f\"{cfg.disaggregation_transfer_backend!r}.\"\n            )\n        if cfg.disaggregation_decode_enable_radix_cache:\n            raise ValueError(\n                \"PD decode DCP currently requires chunk cache; \"\n                \"--disaggregation-decode-enable-radix-cache is not supported.\"\n            )\n        if cfg.enable_hierarchical_cache:\n            raise ValueError(\n                \"PD decode DCP currently requires chunk cache; \"\n                \"--enable-hierarchical-cache is not supported.\"\n            )\n\n    if cfg.disaggregation_mode == \"decode\":\n        if cfg.disaggregation_decode_enable_radix_cache:\n            if cfg.enable_hisparse:\n                raise ValueError(\n                    \"--disaggregation-decode-enable-radix-cache is incompatible \"\n                    \"with --enable-hisparse\"\n                )\n            if cfg.disaggregation_transfer_backend == \"fake\":\n                raise ValueError(\n                    \"--disaggregation-decode-enable-radix-cache is incompatible \"\n                    \"with --disaggregation-transfer-backend fake\"\n                )\n            if cfg.speculative_algorithm is not None:\n                raise ValueError(\n                    \"--disaggregation-decode-enable-radix-cache is incompatible \"\n                    \"with speculative decoding \"\n                    f\"(--speculative-algorithm {cfg.speculative_algorithm})\"\n                )\n            from sglang.srt.arg_groups.overrides import resolved_view\n\n            if resolved_view(server_args).enable_dp_attention:\n                logger.warning(","sourceCodeStart":59,"sourceCodeEnd":95,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/arg_groups/pd_disaggregation_hook.py#L59-L95","documentation":"In decode-mode PD disaggregation, --disaggregation-decode-enable-radix-cache cannot be combined with --enable-hisparse because hisparse changes cache layout in ways the decode radix-cache path does not support.","triggerScenarios":"--disaggregation-mode decode with both --disaggregation-decode-enable-radix-cache and --enable-hisparse set.","commonSituations":"Turning on hisparse for sparse KV handling while also enabling decode radix cache for prefix reuse.","solutions":["Drop --enable-hisparse","Or drop --disaggregation-decode-enable-radix-cache"],"exampleFix":"# before\n--disaggregation-mode decode --disaggregation-decode-enable-radix-cache --enable-hisparse\n# after\n--disaggregation-mode decode --disaggregation-decode-enable-radix-cache","handlingStrategy":"validation","validationCode":"if cfg.disaggregation_mode == \"decode\" and cfg.disaggregation_decode_enable_radix_cache:\n    cfg.enable_hisparse = False","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Build a pairwise compatibility matrix of disaggregation flags and validate pre-launch"],"tags":["sglang","pd-disaggregation","radix-cache","hisparse","config-conflict"],"backgroundTag":"feature-incompatibility","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}