mirror of
https://github.com/kvcache-ai/Mooncake.git
synced 2026-11-05 01:17:55 +00:00
[GH-ISSUE #1729] [Bug]: SSD Offload fails in Metadata Server mode (RDMA writes memory successfully but no data to SSD) #501
Labels
No labels
ascend
auto-closed
bug
bug
CI/Build
Common
documentation
enhancement
feature request
good first issue
help wanted
high priority
MetaX
nightly-failure
pull-request
PyTorch Backend
question
RFC
Roadmap
stale
Store
Tests
Transfer Engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/Mooncake#501
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?
Originally created by @Colors-111 on GitHub (Mar 23, 2026).
Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/1729
Originally assigned to: @ykwd, @zhangzuo21 on GitHub.
Bug Report
When using Mooncake Store with SSD offload enabled in non-P2PHANDSHAKE mode (using Metadata Service), BatchQuerySegmentSlices fails with INVALID_KEY error because the transport_endpoint_ comparison logic doesn't handle multi-NIC scenarios correctly.
Tested qwen3-32b with two H20 instances Hicache enabled within a Docker container.
Environment:
1 Master + 1 RealClient on machine A
1 RealClient on machine B
Steps to Reproduce
master:
client:
sglang:
then run benchmark:
Expected Behavior
SSD offload should work correctly, with objects being written to the SSD storage path.
Actual Behavior
RealClient logs show:
No files are written to the SSD offload directory.
Root Cause Analysis
The Problem
my guess:
Metadata Server mode forces segment.te_endpoint = --host IP (business IP), which is inconsistent with the actual RDMA NIC IP. SSD Offload relies on te_endpoint to verify local Replica Key —— mismatch leads to "Key not found", thus Offload aborts. P2PHANDSHAKE mode automatically sets segment.te_endpoint = RDMA NIC actual IP, so the verification passes.
In
file_storage.cpp: BatchQuerySegmentSlicescompares addresses incorrectly:Why It Fails
In non-P2PHANDSHAKE mode:
These are different IP addresses in multi-NIC environments, causing the comparison to fail.
Before submitting...
@Colors-111 commented on GitHub (Mar 23, 2026):
@ykwd @zhangzuo21 ,
I just submitted an issue regarding the SSD Offload failure in Metadata Server mode.
Could you please take a look when you have time?
Thanks a lot for your help!
@zhangzuo21 commented on GitHub (Mar 24, 2026):
Thanks for your report and analysis! I'll dive into the problem these days.
@zhangzuo21 commented on GitHub (Mar 30, 2026):
Hi @Colors-111, this has been fixed in PR #1771 . Thanks for the detailed report and root cause analysis!