mirror of
https://github.com/kvcache-ai/vllm.git
synced 2026-11-05 01:07:43 +00:00
[PR #8] [Bugfix][EPD] Fix Mooncake transfer lifecycle cleanup #8
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/vllm#8
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/kvcache-ai/vllm/pull/8
Author: @jiaran-king
Created: 8/29/2026
Status: 🔄 Open
Base:
add-mooncake-ec-connector← Head:codex/fix-mooncake-failure-paths📝 Commits (9)
5d5b523[Bugfix][EPD] Fix DeepStack encoder cache reservation sizing (#4)8246b86Merge remote-tracking branch 'origin/main' into add-mooncake-ec-connector4af268d[Bugfix] Prevent duplicate Mooncake push metadata across scheduler steps (#5)623231e[Bugfix] Ignore late Mooncake ready events for cancelled transfers (#6)134b7ec[Bugfix] Sweep Mooncake cancel records in deadline order5be31a3Merge branch 'main' into add-mooncake-ec-connector76c582eFix Mooncake EPD proxy flag in integration script (#7)9a85544[EPD] Make the proxy's per-request logging opt-in12d3476[Bugfix][EPD] Fix Mooncake transfer lifecycle cleanup📊 Changes
17 files changed (+5943 additions, -261 deletions)
View changed files
📝
examples/disaggregated/disaggregated_encoder/disagg_epd_proxy.py(+255 -81)📝
tests/v1/core/test_encoder_cache_manager.py(+32 -0)📝
tests/v1/core/test_scheduler.py(+90 -3)📝
tests/v1/ec_connector/integration/README.md(+170 -170)➕
tests/v1/ec_connector/integration/run_epd_mooncake_ec_full_pipeline.sh(+226 -0)➕
tests/v1/ec_connector/unit/test_ec_mooncake_connector.py(+2137 -0)📝
tests/v1/ec_connector/unit/test_worker_ec_connector.py(+26 -0)📝
vllm/config/ec_transfer.py(+5 -0)📝
vllm/distributed/ec_transfer/ec_connector/base.py(+37 -1)📝
vllm/distributed/ec_transfer/ec_connector/cpu/connector.py(+6 -2)📝
vllm/distributed/ec_transfer/ec_connector/cpu/scheduler/__init__.py(+5 -1)📝
vllm/distributed/ec_transfer/ec_connector/factory.py(+6 -0)➕
vllm/distributed/ec_transfer/ec_connector/mooncake_ec_connector.py(+2907 -0)📝
vllm/v1/core/sched/scheduler.py(+26 -3)📝
vllm/v1/worker/ec_connector_model_runner_mixin.py(+7 -0)📝
vllm/v1/worker/gpu/ec_connector.py(+3 -0)📝
vllm/v1/worker/gpu_worker.py(+5 -0)📄 Description
Summary
Why
The Mooncake connector fans reservation and write work out across consumer TP shards. Previously, the result loop stopped at the first exception. Other shard operations could still be running while source staging memory or destination allocations were released, and successful reservations from the same fan-out could remain allocated until lease expiry.
A cancel RPC can also fail after some remote shards have already processed the cancellation. Removing the scheduler tombstone in that case lets a queued late ready event recreate a transfer whose remote state is already partially released.
Tests
.venv/bin/python -m pytest -q tests/v1/ec_connector/unit/test_ec_mooncake_connector.py(49 passed).venv/bin/python -m pytest -q tests/v1/ec_connector/unit/test_worker_ec_connector.py(6 passed)pre-commit run ruff-check --files vllm/distributed/ec_transfer/ec_connector/mooncake_ec_connector.py tests/v1/ec_connector/unit/test_ec_mooncake_connector.pypre-commit run ruff-format --files vllm/distributed/ec_transfer/ec_connector/mooncake_ec_connector.py tests/v1/ec_connector/unit/test_ec_mooncake_connector.pyThe added fault-injection coverage verifies partial TP-shard reservation failure, partial TP-shard write failure, continued cancellation after a shard RPC failure, cancel-RPC failure with a late ready event, and producer-pool unregistration at shutdown.
Duplicate-work check
I searched the open PRs in
vllm-project/vllmandkvcache-ai/vllmfor the same Mooncake shard-failure and reservation-failure fixes and found no existing implementation.AI assistance
AI assistance was used to trace the failure paths, prepare the implementation and tests, and run the checks above. The human submitter reviewed the change and its test evidence before submission.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.