fix(pd): notify decode of NIXL transfer failures - #36108
Open
zupengwang wants to merge 1 commit into
Open
Conversation
zupengwang
marked this pull request as ready for review
August 24, 2026 02:21
zupengwang
requested review from
ByronHsu,
Duyi-Wang,
HaiShaw,
ShangmingCai,
hnyls2002 and
sogalin
as code owners
August 24, 2026 02:21
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
NIXL's prefill transfer worker currently records transfer errors only in its local manager. The decode side receives no terminal failure signal and can wait until
SGLANG_DISAGGREGATION_WAITING_TIMEOUT(300 seconds by default), unlike Mooncake and MORI.Fixes #36033.
Changes
NIXL_TRANSFER_FAILUREcontrol message to every unique decode endpoint when the prefill transfer worker fails.Failedstate, so sender cleanup cannot race away the notification targets.The NIXL success/completion protocol and KV data path are unchanged.
Validation
d1af3c89233c475fc1bf11939d86787e6cddd58c: the 7 new focused tests failed before the implementation.isort 7.0.0 --check-only,ruff 0.15.1(F401,F821,UP037),black 26.1.0 --check,codespell 2.4.1,check_no_bare_pytest_main.py,check_registered_tests.py, andgit diff --checkpassed.The unit run used an import-isolated harness because the local environment does not contain every optional SGLang model/quantization dependency. The harness stubs only unrelated top-level imports; the NIXL, common disaggregation, ZMQ, and test modules are the source from this commit.
Risk and checks not run
CI_PERMISSIONS.json.CI States
Latest PR Test (Base): ❌ Run #32662942920
Latest PR Test (Extra): ❌ Run #32662942889
Latest PR Test (AMD ROCm 7.2): ❌ Run #32662943037