- Remove gitlinks (160000 mode) for chainfire, flaredb, iam - Add workspace contents as regular tracked files - Update flake.nix to use simple paths instead of builtins.fetchGit This resolves the nix build failure where submodule directories appeared empty in the nix store. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1.2 KiB
1.2 KiB
Contracts: PD / Placement RPCs (Multi-Raft)
Source of truth: rdb-proto/src/pdpb.proto
Services
- Pd
RegisterStore(RegisterStoreRequest) -> RegisterStoreResponseGetRegion(GetRegionRequest) -> GetRegionResponseListRegions(ListRegionsRequest) -> ListRegionsResponseMoveRegion(MoveRegionRequest) -> MoveRegionResponse
Messages (selected)
-
Region:id: u64start_key: bytesend_key: bytes(empty = infinity)peers: repeated u64(store IDs)leader_id: u64
-
Store:id: u64addr: string
-
MoveRegionRequest:region_id: u64from_store: u64to_store: u64
Behaviors / Expectations
ListRegionsis used at bootstrap and periodic refresh to populate routing.MoveRegiondirects a leader to add a replica onto_store(ConfChange Add) and, after catch-up, removefrom_store(ConfChange Remove). Current implementation keeps source online; removal can be triggered separately.- Region key ranges returned by PD must be non-overlapping; nodes validate and fail startup on overlap.
- Heartbeat: nodes periodically refresh routing via
ListRegions(30s). A dedicated heartbeat RPC can replace this in a future phase.