Repository navigation
Conversation
13 of 19 tasks
This branch has not been deployed
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.
Description
With
MC_SLICE_TIMEOUTenabled, classic RDMA currently reportsTIMEOUTfrom a status query while the timed-out WR can still access the caller's buffers. Reusing those buffers after that result can allow a delayed READ or WRITE to overwrite new data.Move timeout detection to the posting/CQ owner. Mark the task canceled, reject queued and retried siblings, retire its affected endpoints through the existing QP-to-ERR path, and consume actual completion/flush CQEs before publishing task failure. The task stays
WAITINGwhile draining and becomesFAILEDafter every slice is terminal; a late success cannot undo timeout cancellation. Retain endpoint references and accounting until CQ processing finishes. The registry is enabled only withMC_SLICE_TIMEOUT, independently of diagnostic tracking.This is an independent change based on
fe4f297a. If QP-to-ERR fails or the device never flushes, retain pending work and its buffers. This does not add a hard completion deadline, a public cancellation API, or a fix for Python/Store wait deadlines. Batch-levelFAILEDcan still precede completion of other tasks. The API documentation states these limits.Related work checked:
transfer_check_status; this patch does not alter batch-level status semantics.Suggested Merge Priority
Module
mooncake-transfer-engine)Type of Change
How Has This Been Tested?
Linux CPU classic build with
USE_TENT=OFF,USE_CUDA=OFF. The new suite simulates only the verbs boundary and exercises production posting, endpoint retirement, CQ accounting and public task status queries.Test commands:
MC_SLICE_TIMEOUT=1,MC_WORKERS_PER_CTX=2,mlx5_1andmlx5_2.make htmlpassed without warnings; inspected the generated Transfer Engine API page.Manual real-RDMA A/B fault probe (local harness):
Both binaries used the same probe object and dependencies; baseline substituted the original status/worker/endpoint implementations. Post a real 1 MiB READ or WRITE while the peer QP remains RESET, with a one-second software timeout shorter than the hardware retry budget. Verify no completion and an untouched destination before the timeout. Reuse the destination after the observed terminal result, then enable the peer QP. Fixed runs observe the buffer for 600 ms after recovery, and every case also transfers data over a fresh connection.
On each of
mlx5_4andmlx5_1, run 10 READ and 10 WRITE cases (40 cases per version):The probe uses real same-host RNICs and controlled QP unavailability. It does not qualify physical link outages, GPU/SGLang workloads, or already-delivered cross-host packets.
Test results:
Checklist
./scripts/code_format.shAI Assistance Disclosure
OpenAI Codex assisted with implementation, code review, regression tests, real-RDMA A/B testing, documentation and this description. This draft awaits human review of every changed line; no completed human review is asserted.