14 November 2026
How to reason about consensus during network partitions
Presented by @practicalagentlabs
Why network partitions make consensus hard
Distributed systems rely on consensus protocols to keep multiple nodes agreeing on shared state. In an ideal network, messages arrive quickly and reliably, so protocols like paxos or raft can move through their phases without trouble. But real networks suffer partitions: a link goes down, a switch fails, or a firewall starts dropping packets. When that happens, the system splits into groups that cannot talk to each other. Each group may forge ahead on its own, believing it holds the truth. The result can be split-brain scenarios where two parts of the system accept conflicting updates, and later, when the partition heals, there is no clean way to reconcile them.
Reasoning about consensus during a partition means understanding what your protocol guarantees and where it trades availability for consistency. The same design choices that make a system fast in normal operation can cause trouble when a partition occurs. By walking through the steps of how a partition affects a consensus protocol, you can predict behaviour, avoid surprises, and decide where you can afford to relax consistency for the sake of keeping the system responsive.
Step one: understand the partition model your protocol assumes
Every consensus protocol makes assumptions about the network. Some assume a fully connected, reliable network and simply fail if messages are lost. Others assume a partially synchronous model where the network can be unreliable for a while but eventually becomes stable. The first thing to check is what your protocol says about partitions. If it assumes a synchronous network, a partition will likely block progress entirely. If it uses an asynchronous model, it may tolerate delays but still require a majority to make progress.
What to watch: does your protocol require a strict majority of nodes to be reachable? If a partition splits the system into two groups, only the group that holds more than half the nodes can continue to make decisions. The smaller group either blocks or goes into a read-only mode. This is the classic cap theorem trade-off in action: you give up availability during a partition to preserve consistency.
Step two: identify the quorum rules
Consensus protocols use quorums to ensure that conflicting decisions cannot be made simultaneously. In raft, for example, a leader must collect acknowledgements from a majority of nodes before committing a log entry. In paxos, a proposer needs a quorum of acceptors to promise not to accept older proposals. During a partition, the quorum rules determine which side can make progress. If the partitioned side contains a majority, it can continue normally. If it does not, it stalls.
What to watch: some protocols allow flexible quorums where a write quorum and a read quorum overlap in different ways. If you have control over quorum sizes, you can tune how many nodes must agree before a write is considered durable. A smaller write quorum improves availability during a partition but risks losing the write if the remaining nodes fail. A larger write quorum reduces availability but increases safety.
Step three: decide whether to prioritise availability or consistency
This is the hard part. You cannot have both during a partition. If your system needs to keep accepting writes no matter what, you accept that conflicts may arise and you need a strategy to resolve them later. If your system must never see conflicting states, you accept that some nodes will reject writes until the partition heals. The right choice depends on the application. A collaborative document editor may tolerate temporary conflicts that get merged later. A banking ledger probably cannot.
What to watch: be explicit about the trade-off in your design documents and communicate it to the team. When a partition happens, operators need to know what behaviour to expect. If the system silently drops writes on the minority side, that can be worse than refusing them with a clear error message. Similarly, if the system continues accepting writes on both sides, you need a conflict resolution mechanism that works at scale. Last-writer-wins is simple but loses data. Crdts can merge automatically but add complexity.
Step four: test with controlled partitions
The best way to reason about consensus during a partition is to observe how your system behaves under one. Tools like iptables, tc, or chaos engineering platforms let you introduce network cuts in a test environment. You can partition a cluster into two groups and watch how each side responds. Does the leader election trigger? Do clients on the minority side get errors or stale data? When the partition heals, does the system converge without manual intervention?
What to watch: partitions are not binary. A link can become slow, lossy, or asymmetric. A node might be able to send packets but not receive them. These partial partitions are harder to detect and can cause subtle bugs. A consensus protocol that works perfectly under a clean cut may behave unexpectedly under a degraded link. Test with latency, packet loss, and asymmetric partitions, not just a hard break.
Step five: plan the recovery
When the partition heals, the system must reconcile the states that diverged. In a protocol like raft, the minority side follows the leader from the majority side, so any writes accepted on the minority side during the partition are lost. The application must be prepared for that. In protocols that allow multi-leader operation, such as cassandra or dynamo-style systems, the healing process involves repairing replicas through hinted handoffs or anti-entropy procedures. The time to converge can be significant if a large amount of data diverged.
What to watch: recovery is not instant. After the network is restored, the nodes need to catch up on missed messages, replay logs, and re-establish quorums. During this period, the system may be vulnerable to new partitions or cascading failures. Monitor the cluster's health metrics closely after a partition heals, and consider throttling client traffic until the system stabilises.
Putting it together
Reasoning about consensus during network partitions is a skill that improves with deliberate practice. Start by mapping out your protocol's quorum rules and partition tolerance guarantees. Then run experiments to validate your understanding. The goal is not to eliminate partitions, they will happen, but to make sure your system behaves predictably when they do. Publications such as those at Futurestack.online consensus protocols explain these ideas in more depth and provide practical guidance for engineers building distributed systems.
When you know how your protocol behaves under a partition, you can design your application layer to cope. You might accept stale reads on the minority side, queue writes for later replay, or simply refuse service. Each choice has operational consequences. The important thing is that the choice is intentional, not an accident of the protocol's default behaviour.
As distributed systems grow larger and more heterogeneous, the frequency of network partitions may increase. Cloud deployments, edge nodes, and multi-region clusters all introduce new failure modes. A solid grasp of consensus protocols and their behaviour under partition is not just academic knowledge. It is a practical tool for building systems that survive real-world conditions. For anyone designing or operating such systems, resources like Futurestack.online consensus protocols offer a clear path from theory to reliable practice.
Futurestack.online on social media
Instagram