Development
Diminuendo auto-spawns a single-node Concordance:ConcordanceProcess spawning a child process vs being a no-op.
Production (3-Node Raft Cluster)
Build Standalone Binary
Rolling Upgrade
Quorum (2 of 3) is maintained throughout:- Remove node 3:
POST /api/v1/cluster/remove {"nodeId": "node3"} - Stop node 3, upgrade binary, restart with
--join=node1:4100 - Repeat for node 2
- Transfer leadership away from node 1, then upgrade node 1
Replace Failed Node
Failure Behavior
| Scenario | Impact | Recovery |
|---|---|---|
| 1 node down | Reads continue, writes continue (quorum intact) | New leader elected in under 3s |
| 2 nodes down | Cluster loses quorum, writes fail | Restart nodes; auto-rejoin |
| Network partition | Majority side continues; minority read-only | Auto-heals on reconnect |
| Leader crash | Uncommitted writes lost | Followers elect new leader; clients retry |