Repository navigation
[Mooncake][Worker] Fail only the request whose async tensor read failed, at TP>1 too #419
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Gaurav-Shah05
merged 15 commits into
mstar-project:main
from
arun-elr:fix/failed-tensor-read
Oct 26, 2026
Merged
Changes from all commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
006f3c7
Fail only the request whose async (Mooncake) tensor read failed, and …
arun-elr b9622ba
Hold READS_DONE while a failed read's transfers run, and read a torn-…
arun-elr b15fba9
Poll a read's future through done() and result() only, as the SHM are…
arun-elr 3e01445
test: the output-failure teardown fake tensor manager reports no fail…
arun-elr dc83e30
Transfer metrics: a failed read is dropped and reported, not raised, …
arun-elr c817311
test: the serving-metrics stub tensor manager reports no failed reads
arun-elr c4cbd40
test: the fake Mooncake engine's report waits for the reader to submi…
arun-elr 6bf3a03
Count a read's retries under the device filter the Mooncake engine wa…
arun-elr a61c341
Log a failed output read in one line, as a failed input read is
arun-elr 9ff9f8d
Count the HCAs for read retries on the first failed tensor, not at st…
arun-elr 9e3fd14
test: over real Mooncake TCP, a failed read keeps its buffers until a…
arun-elr 490b808
test: acceptance tests for a TP follower whose input read fails after…
arun-elr 3748ab9
TP: take a row whose follower read failed out of the step on every ra…
arun-elr 8087222
TP read check: record every failed read for the check, and share the …
arun-elr 1628c8b
test: the in-process Mooncake engine of the slice tests reads async too
arun-elr File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Two ordering problems here. The failed reads are handled first and then ready still holds this rid's outputs from the same poll, so they are emitted after the error chunk; and the chat SSE loop in serving_chat.py keeps yielding after an error event, so a stream can carry error, content, error. With injection on, 2 of 16 streams carried two error events ("EEd", "cEEd"). Skipping ready[rid] for rids with a failed read (and ending the stream at the first error) fixes both.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 5dc5ff4. Nothing goes out for a request after its error: outputs ready in the same poll are released without postprocessing, and outputs held for ordering are dropped.
iter_result_chunksnow ends the response at the first error. It no longer appendsreq.errorafter an in-band error, which was the second "E" in "EEd". On the H200 run with injection (before the #368 rebase), all 16 streams carried exactly one error and nothing after it (rcEdorrEd).