mirror of
https://github.com/kvcache-ai/Mooncake.git
synced 2026-11-05 01:17:55 +00:00
[GH-ISSUE #3574] [Store][MasterService Tests] Migrate storage-tier RPC scenarios #918
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#918
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 @Aionw on GitHub (Aug 21, 2026).
Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/3574
Parent: #3098\nDepends on: #3573\n\nMigrate client-visible storage-tier behavior using the typed DSL.\n\nScope:\n- NoF and DFS scenarios;\n- SSD and local-disk mount and unmount behavior;\n- offload heartbeat and completion;\n- capacity reporting and disk-replica eviction;\n- keep backend-specific setup and invariants in integration tests.\n\nThis PR should consume the storage DSL extension established by the foundation PR.
@github-actions[bot] commented on GitHub (Aug 21, 2026):
Thanks for opening this issue, @Aionw!
41376987A maintainer will triage this when possible. To help us respond faster, please include:
Useful links: Documentation · Contributing guide
@rishabhsinha17 commented on GitHub (Sep 2, 2026):
Claiming this one (campaign sibling of #3572 -> #3656 merged, #3573 -> #3702 open). The new scenario files will be independent of #3702's, so either can land first; the monolith edits need a trivial rebase whichever comes second.
Scope check against the landed DSL (#3510 plus
Eventually()from #3748):Already expressible, migrating with no new vocabulary:
DfsPutEndAllAndUpsertTopologyAreAtomicand the fourDfsEvictionSplitsAcceptedAndRejectedCandidatescases (DfsReplicas,OfType(ALL),EvictDfs,EvictMemory,HasDfsReplicas; the DFS env stays in the test body since it is read at service construction).root_fs_dir):PutEndBothReplica,PutRevoke{Disk,Memory,Both}Replica,RemoveKey, plus theEvictDiskReplica_*cases once the action below exists.Needs vocabulary the foundation deliberately deferred ("introduced together with its first migration consumer and contract coverage"). Proposed, all thin wrappers over exported RPCs, each with contract tests:
MountLocalDisk(actor)/.OffloadingDisabled()andUnmountLocalDisk(actor)ReportSsdCapacity(actor, bytes)OffloadHeartbeat(actor).ExpectTasks({...})/.ExpectNoTasks()/.Disabled()CompleteOffload({...}).By(actor).OnNode(node)(NotifyOffloadSuccess registering COMPLETE local-disk replicas sized from the objects' PutStart)EvictDiskReplica(key).By(actor).OfType(...)Consumers:
OffloadObjectHeartbeat(monolith), the local-disk half ofmaster_service_ssd_test.cpp(unmount idempotency, stops offload work, drops only its own replicas, re-adoption, refused NotifyOffloadSuccess after unmount, usage-tracking release on Remove and BatchReplicaClear, SSD-free-ratio placement after offload, EvictDiskReplica releasing usage), and the offload-queue admission cases inoffload_on_evict_test.cppthat are pure RPC flows (PutEnd queueing per combo, upsert preempting or being rejected by a queued or in-flight offload).Staying focused, with reasons in the PR: metric-probing SSD tests (
calculate_cache_stats,file_cache_nums), thePushOffloadingQueueprivate hook, the perf comparison,PutStartExpires(timing twin of the monolith'sPutStartExpiringTest), the eviction-pressure loops andConcurrentMountLocalDiskSegment/LocalDiskUnmountInterleavingTest(#3575 territory), and the NoF soft-pin tests (private deadline probe).One question, the
USE_NOFput-end/revoke tests:NoFNodeis in the DSL, butMountNoFSegmentreturnsUNAVAILABLE_IN_CURRENT_MODEwithoutUSE_NOF, and neither nightly nor my local build sets it (SPDK). I can move them under the same#ifdef USE_NOFguard, but I would be shipping scenarios I cannot execute. My default is to leave them in the monolith and say so in the PR; tell me if you prefer the guarded migration.If you would rather see the local-disk/offload vocabulary as its own foundation-style PR first, or kept out of the DSL entirely, say so and I will split.