sgl-project/sglang · error · ValueError

PD decode DCP currently requires chunk cache; --disaggregati

Error message

PD decode DCP currently requires chunk cache; --disaggregation-decode-enable-radix-cache is not supported.

What it means

PD decode DCP currently requires chunk-cache semantics on the decode side, so enabling --disaggregation-decode-enable-radix-cache alongside DCP is rejected. DCP's KV layout/protection assumes chunk cache behavior.

Source

Thrown at python/sglang/srt/arg_groups/pd_disaggregation_hook.py:64

            "use the same DCP layout, but it usually adds communication "
            "overhead without improving prefill performance."
        )

    if cfg.disaggregation_mode == "decode" and cfg.dcp_size > 1:
        # Fake transfer moves no KV and is only used for synthetic decode
        # benchmarks, so it does not need the DCP relayout from Mooncake/NIXL.
        if cfg.disaggregation_transfer_backend not in (
            "mooncake",
            "nixl",
            "fake",
        ):
            raise ValueError(
                "PD decode DCP requires --disaggregation-transfer-backend "
                "mooncake, nixl, or fake for synthetic benchmarking, got "
                f"{cfg.disaggregation_transfer_backend!r}."
            )
        if cfg.disaggregation_decode_enable_radix_cache:
            raise ValueError(
                "PD decode DCP currently requires chunk cache; "
                "--disaggregation-decode-enable-radix-cache is not supported."
            )
        if cfg.enable_hierarchical_cache:
            raise ValueError(
                "PD decode DCP currently requires chunk cache; "
                "--enable-hierarchical-cache is not supported."
            )

    if cfg.disaggregation_mode == "decode":
        if cfg.disaggregation_decode_enable_radix_cache:
            if cfg.enable_hisparse:
                raise ValueError(
                    "--disaggregation-decode-enable-radix-cache is incompatible "
                    "with --enable-hisparse"
                )
            if cfg.disaggregation_transfer_backend == "fake":
                raise ValueError(

View on GitHub (pinned to 0132848349)

Solutions

  1. Remove --disaggregation-decode-enable-radix-cache when using PD decode DCP
  2. If decode radix cache is required, disable the DCP feature

Example fix

# before
<DCP flags> --disaggregation-decode-enable-radix-cache
# after
<DCP flags>
Defensive patterns

Strategy: validation

Validate before calling

if dcp_enabled:
    cfg.disaggregation_decode_enable_radix_cache = False

Prevention

When it happens

Trigger: PD decode DCP enabled together with --disaggregation-decode-enable-radix-cache.

Common situations: Tuning decode-side cache reuse for prefix-heavy workloads on a disaggregated deployment and enabling radix cache without realizing DCP forbids it.

Related errors


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/d2a24b9553964af6. Report an issue: GitHub.