Skip to content

During a Partition — Serve or Refuse?#

The Decision Every Node Must Make#

A partition has happened. Node B is isolated. A user request arrives.

Node B has two options:

Option 1 — Serve the request
  Return whatever data Node B currently has
  Data might be stale (Node A may have newer writes)
  User gets a response ✓
  Response might be wrong ✗

Option 2 — Refuse the request
  Return an error: "system unavailable"
  Data integrity guaranteed ✓
  User gets no response ✗

Neither option is perfect. The right choice depends entirely on the system.


When to Serve (Choose Availability)#

Serve stale data when the cost of being wrong is low

News feed:

User reads article list during partition
Node B returns articles from 2 minutes ago
User sees slightly old feed → nobody notices

Recommendation system:

Netflix shows recommendations from cached data
Slightly stale recommendations → user still finds something to watch
Being down entirely → user leaves the platform

Social features:

Like counts, follower counts, view counters
Slightly stale numbers → acceptable
Service being down → not acceptable

The reasoning: Stale data is annoying. Errors are worse. For non-critical reads, availability wins.


When to Refuse (Choose Consistency)#

Refuse requests when the cost of wrong data is high

Payment system:

User checks balance during partition
Node B has stale balance (Mumbai had a withdrawal that didn't replicate)
Node B serves stale balance → user sees $1000
User sends $800 → goes through
Actual balance was $200 → now -$600

Inventory system:

Last item in stock
Both nodes accept order during partition
Two users both get "order confirmed"
One of them will be disappointed

Seat booking / hotel reservation:

Same room booked by two users during partition
Both get confirmation
Someone shows up to a taken room

The reasoning: Wrong data causes financial loss, legal issues, or broken trust. Better to be temporarily unavailable than permanently wrong.


The System-Specific Decision#

System During Partition Reason
Social feed Serve stale Slight staleness harmless
Recommendations Serve stale Better than being down
Shopping cart Serve stale Amazon's famous choice
Bank balance Refuse Wrong balance = financial loss
Payment processing Refuse Double charge = unacceptable
Inventory Refuse Overselling = broken trust
Hotel booking Refuse Double booking = serious problem

This Is CAP in Action#

This serve-or-refuse decision IS the CAP theorem

Choosing to SERVE  → choosing Availability over Consistency
Choosing to REFUSE → choosing Consistency over Availability

You cannot choose both during a partition
→ that's the CAP theorem

During normal operation — no partition — you can have both. It's only when a partition happens that you're forced to pick one.

The next topic (CAP Theorem) formalizes this exactly.