- 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>
953 B
953 B
Raft Service Contract (gRPC)
Overview
Single RPC entrypoint for Raft message exchange; uses raft-rs Message protobuf encoding (prost).
Service
service RaftService {
rpc Send(RaftMessage) returns (RaftResponse);
}
Messages
-
RaftMessage
message: bytes(serializedraft::eraftpb::Messagevia prost)
-
RaftResponse
- Empty payload; errors conveyed via gRPC status
Expectations
- Client (peer) wraps raft-rs
Messageand posts to remote peer viaSend. - Receivers decode and feed into
RawNode::step, then driveon_readyto persist/apply. - Transport must retry/transient-handle UNAVAILABLE; fail fast on INVALID_ARGUMENT decode errors.
Test Hooks
- Integration harness should:
- Start 3 peers with distinct addresses.
- Wire RaftService between peers.
- Propose on leader; verify followers receive and persist entries.
- Simulate follower stop/restart and verify catch-up via
Send.