Repository navigation
Conversation
Co-authored-by: OpenAI Codex <codex@openai.com> Signed-off-by: Alex <alex.tech.lab@outlook.com>
|
I want to clarify the old That statement is correct at the payload level: each self-describing It does not imply that a consumer can update its index in arbitrary order. For a child block, llm-d needs the parent engine hash to resolve an existing engine-hash -> request-key mapping before it can compute the child request key: |
Co-authored-by: OpenAI Codex <codex@openai.com> Signed-off-by: Alex <alex.tech.lab@outlook.com>
|
Thanks for working on this. From my point of view, Since ordering is still not guaranteed across jobs or tiers, llm-d must handle missing parents anyway. Preserving |
Co-authored-by: OpenAI Codex <codex@openai.com> Signed-off-by: Alex <alex.tech.lab@outlook.com>
|
Thank you all. Are there any remaining issues or areas for improvement with this proposal? |
|
/ci run |
|
✅ @Alex-ai-future, CI is now available for this PR.
|
|
✅ Triggered Buildkite CI #98335 for commit ℹ️ This PR is 50 commits behind upstream |
|
/ci run |
|
✅ Triggered Buildkite CI #98571 for commit |
|
/ci run |
|
✅ Triggered Buildkite CI #98677 for commit |
Overview
Preserve offload store key order so self-describing
BlockStoredevents remainparent-before-child within a transfer job. This prevents KV-aware routers from
dropping child blocks when a parent mapping has not been indexed yet.
Claims
TransferJobStatus.keysin prefix order and deduplicate keys whileretaining their first occurrence.
secondary-tier jobs, tiers, or promotion events; router-side pending/replay
still covers those cases.
Validation
pytest tests/v1/kv_connector/unit/offloading_connector/test_events.py -q:51 passed.
pytest tests/v1/kv_connector/unit/offloading_connector/test_scheduler.py -qwith the affected cases selected: 100 passed.
pre-commit run --files <changed-files>: passed.Details
The missing prefix order resulted from three assumptions rather than a decision
that order was unnecessary:
#39186introducedTransferJobStatus.keysas set-backed job bookkeeping before offload eventsexisted.
#43468made stored eventsself-describing and explicitly treated key order as irrelevant because each
payload contains its parent hash. The order-independent test and
“key order is free” comment codified that assumption.
#52103later showed that llm-d still needs the parent event indexed first. The author
confirmed the gap in
this reply.
prepare_store()returns keys in prefix order, but the scheduler stored them ina set. This can emit a child first even when transfer completion is FIFO. The
scheduler now preserves job order without removing set-style deduplication.
Secondary tiers are intentionally outside the ordering guarantee. FS/OBJ jobs
complete asynchronously and may become distinct raw events; tier aggregation
emits primary and secondary events by tier, not by parent topology. Therefore
this change fixes intra-job ordering but does not reorder across secondary jobs,
tiers, or promotions. Those cases remain a consumer concern.
Duplicate-work check: no open PR directly fixes this ordering path. #63129
addresses reused-key metadata lifecycle, and #52103 refactors event provenance
and removals while still retaining set-backed job keys.
AI assistance was used for investigation, implementation, and tests. The human
submitter must review every changed line and rerun the validation above.
Pull Request Checklist
I used vLLM's
/pr-checklistskill.AI assistance was used during the creation of this PR.
Design Fit: Small bug fix isolated to offloading event ordering.
Testing and Validation: Repro and related suites pass locally.
Code Quality and Style: Existing tests extended; pre-commit passes.
Pull Request Contents: Includes root cause, scope, and duplicate check.