Search DistillSys

Find a concept

Type at least two characters to search lessons, designs, papers, and interview prep.

Reliabilityfundamental5 min read

Partial Failures

Design for components and network paths failing independently while the rest of the system continues.

2–5 minute refresher
Mental model

Healthy caller + uncertain network + independently failing dependency

30second
refresher
A partial failure leaves some nodes or communication paths working while others are slow, unreachable, or returning errors. The surviving system must decide how to respond without complete knowledge.

What problem does it solve?

Unlike a local process crash, remote failure is ambiguous. The request, the response, or only one network direction may be lost, and different observers can reach different conclusions.

How it works

  1. Define a deadline for every remote operation.
  2. Classify failures as definite, ambiguous, or policy rejection.
  3. Carry stable identity across retries.
  4. Isolate the dependency with concurrency and resource limits.
  5. Reconcile uncertain outcomes from authoritative durable state.
Decision guide

Key trade-offs

ChoiceWhat you gainWhat it costs
Short deadlineProtect caller resourcesMore false timeouts
Fail openContinue servicePossible invariant violation
Fail closedPreserve safetyReduced availability
What happens if?

Only responses are dropped

The server successfully applies requests while callers time out and retry. Without idempotency this duplicates effects and makes the healthy server appear broken.

Where it appears

  • Remote APIs
  • Database clients
  • Service meshes
  • Multi-zone clusters
Senior interview modeHow do you distinguish a slow dependency from a failed one?Show answer
You cannot know perfectly within a finite deadline. Treat the timeout as a policy decision, use health evidence and repeated observations, and design the operation to remain safe if the dependency was merely slow.
#failures#timeouts#ambiguity#fault isolation