← all runs

Resilience under provider failure: fallback chains and circuit breaking

Run 20261006-133656 · version local · 2026-10-06 13:36 UTC · 0 upstream calls (0 replayed) · $0.0000

Question. How much availability does a fallback chain buy during a provider outage, and what does the circuit breaker add on top?

Availability, single provider
62.5%
primary down for 20 s of 60 s
Availability, fallback + breaker
99.2%
p95 1184ms
Dead-primary calls avoided by the breaker
200 → 5
during the outage window

Findings

Requests served successfully

Whole runDuring the outage
0.0%25.0%50.0%75.0%100.0%Single providerSingle provider · Whole run: 62.5%62.5%Single provider · During the outage: 0.0%0.0%Fallback chainFallback chain · Whole run: 99.2%99.2%Fallback chain · During the outage: 97.5%97.5%Fallback + circuit breakerFallback + circuit breaker · Whole run: 99.2%99.2%Fallback + circuit breaker · During the outage: 97.5%97.5%

Latency percentiles

Lower is better. Virtual-clock latency: a failed primary call costs its full 2 s timeout before the fallback fires.

p50p95p99
0ms799ms1.60s2.40s3.20sSingle providerSingle provider · p50: 738ms738msSingle provider · p95: 2.00s2.00sSingle provider · p99: 2.00s2.00sFallback chainFallback chain · p50: 738ms738msFallback chain · p95: 3.13s3.13sFallback chain · p99: 3.20s3.20sFallback + circuit breakerFallback + circuit breaker · p50: 710ms710msFallback + circuit breaker · p95: 1.18s1.18sFallback + circuit breaker · p99: 3.10s3.10s

Outcome by configuration

ConfigurationSuccess rateSuccess during outagep50p95p99Calls to the dead primary during outageServed by backup
Single provider62.5%0.0%738ms2000ms2000ms2000
Fallback chain99.2%97.5%738ms3128ms3196ms200220
Fallback + circuit breaker99.2%97.5%710ms1184ms3095ms5222

Method notes

Configuration
{
  "policy": "balanced",
  "policy_version": "1.0.0",
  "quick": true,
  "seed": 42,
  "workers": 6
}