mirror of
https://github.com/kvcache-ai/Mooncake.git
synced 2026-11-05 01:17:55 +00:00
[PR #744] [MERGED] [Store] Add replication guarantees #1789
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#1789
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/Mooncake/pull/744
Author: @vladnosiv
Created: 8/13/2025
Status: ✅ Merged
Merged: 8/25/2025
Merged by: @stmatengss
Base:
main← Head:store-replication📝 Commits (10+)
526bc58add replication guaranteesa05f2c6refactor implementation332cb9bMerge branch 'main' into store-replication8e35f37fix merge aftermath973645fless copies5ffb4detry fix wheel testse306c97fix wheel tests7cababcremove old comment62fa750fix wheel tests and add replication fault tolerance wheel test6703699Merge branch 'main' into store-replication📊 Changes
14 files changed (+900 additions, -409 deletions)
View changed files
📝
doc/en/architecture.md(+1 -1)📝
doc/en/mooncake-store-preview.md(+10 -3)📝
doc/zh/architecture.md(+1 -1)📝
doc/zh/mooncake-store-preview.md(+8 -2)📝
docs/source/design/architecture.md(+1 -1)📝
docs/source/design/mooncake-store-preview.md(+10 -3)📝
mooncake-store/include/allocation_strategy.h(+182 -64)📝
mooncake-store/include/types.h(+27 -0)📝
mooncake-store/src/master_service.cpp(+12 -26)📝
mooncake-store/tests/allocation_strategy_test.cpp(+236 -76)📝
mooncake-store/tests/master_service_test.cpp(+100 -23)📝
mooncake-wheel/tests/test_distributed_object_store.py(+5 -209)➕
mooncake-wheel/tests/test_replicated_distributed_object_store.py(+306 -0)📝
scripts/run_tests.sh(+1 -0)📄 Description
The current slice replication mechanism in the Store does not provide any guarantees. For example, for replication factor 2, both replicas can be allocated to the same segment.
This PR adds a guarantee for replication. When using replication factor N, the loss of any N-1 segments will not make it impossible to read the key.
From the point of view of implementation, I have now made a version with a minimum number of changes for ease of review. Nevertheless, it seems logical to me that the allocator could return buffers by the number of replicas for each slice, in which case the logic for ensuring guarantees would be on the allocator's side. I can rewrite it to this version.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.