{"record":{"id":"e3cdd85d4338744c","repo":"sgl-project/sglang","slug":"disaggregation-decode-retraction-backup-host-poo-e3cdd8","errorCode":null,"errorMessage":"--disaggregation-decode-retraction-backup=host_pool requires --disable-priority-preemption when priority scheduling is enabled.","messagePattern":"--disaggregation-decode-retraction-backup=host_pool requires --disable-priority-preemption when priority scheduling is enabled\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/server_args.py","lineNumber":9129,"sourceCode":"        ):\n            raise ValueError(\n                \"--disaggregation-decode-retraction-backup=host_pool is only \"\n                \"supported on a PD decode server.\"\n            )\n        if (\n            cfg.disaggregation_decode_retraction_backup == \"host_pool\"\n            and cfg.dcp_size > 1\n        ):\n            raise ValueError(\n                \"--disaggregation-decode-retraction-backup=host_pool does not \"\n                \"support --dcp-size > 1.\"\n            )\n        if (\n            cfg.disaggregation_decode_retraction_backup == \"host_pool\"\n            and cfg.enable_priority_scheduling\n            and not cfg.disable_priority_preemption\n        ):\n            raise ValueError(\n                \"--disaggregation-decode-retraction-backup=host_pool requires \"\n                \"--disable-priority-preemption when priority scheduling is enabled.\"\n            )\n\n        if cfg.enable_hierarchical_cache and cfg.disable_radix_cache:\n            raise ValueError(\n                \"The arguments enable-hierarchical-cache and disable-radix-cache are mutually exclusive \"\n                \"and cannot be used at the same time. Please use only one of them.\"\n            )\n\n        if cfg.disaggregation_decode_enable_offload_kvcache:\n            if cfg.disaggregation_mode != \"decode\":\n                raise ValueError(\n                    \"The argument disaggregation-decode-enable-offload-kvcache is only supported for decode side.\"\n                )\n            if cfg.hicache_storage_backend is None:\n                raise ValueError(\n                    \"The argument disaggregation-decode-enable-offload-kvcache is only supported when hicache-storage-backend is provided.\"","sourceCodeStart":9111,"sourceCodeEnd":9147,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/server_args.py#L9111-L9147","documentation":"ServerArgs._handle_cache_compatibility rejects the combination of --disaggregation-decode-retraction-backup=host_pool with priority scheduling enabled (--enable-priority-scheduling) unless --disable-priority-preemption is also set. The host-pool retraction backup path is incompatible with priority preemption's request-retraction mechanics, so priority scheduling is only allowed in non-preempting mode when the backup pool is on.","triggerScenarios":"Launching with --disaggregation-decode-retraction-backup host_pool and --enable-priority-scheduling without --disable-priority-preemption on a PD decode server.","commonSituations":"Enabling priority scheduling for SLO-tiered serving and host-pool backup together on the decode tier; importing a full flag list from another deployment that had preemption disabled; not realizing priority preemption is on by default when priority scheduling is enabled.","solutions":["Add --disable-priority-preemption alongside --enable-priority-scheduling and the host_pool backup flag","Or drop --disaggregation-decode-retraction-backup host_pool if priority preemption matters more than host-backed retraction","Or disable priority scheduling entirely if neither override is acceptable"],"exampleFix":"# before\npython -m sglang.launch_server --disaggregation-mode decode --disaggregation-decode-retraction-backup host_pool --enable-priority-scheduling ...\n# after\npython -m sglang.launch_server --disaggregation-mode decode --disaggregation-decode-retraction-backup host_pool --enable-priority-scheduling --disable-priority-preemption ...","handlingStrategy":"validation","validationCode":"def validate_priority(retraction_backup: str | None, enable_priority: bool, disable_preemption: bool):\n    if retraction_backup == \"host_pool\" and enable_priority:\n        assert disable_preemption, \"add --disable-priority-preemption\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["When enabling priority scheduling, audit all decode-tier flags for preemption conflicts","Keep flag bundles that are known-valid as named presets instead of ad-hoc lists"],"tags":["sglang","pd-disaggregation","priority-scheduling","preemption","retraction"],"backgroundTag":"invalid-cli-config-combination","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}