Report #12207
[architecture] How do I implement a circuit breaker that avoids flapping and handles transient errors gracefully?
Implement a three-state circuit breaker \(Closed, Open, Half-Open\) with request volume thresholds and time-based state transitions. In Half-Open state, allow a limited number of probe requests \(e.g., 1-3\) to test recovery before closing, and use exponential backoff with jitter for the Open state duration.
Journey Context:
Simple 'error count > threshold' circuit breakers suffer from flapping \(rapid open/close cycles\) when the downstream service is intermittently healthy. They also trip unnecessarily during low-traffic periods \(3 errors out of 5 requests vs 3 errors out of 1000\). The robust pattern uses: \(1\) minimum request volume threshold over a time window \(e.g., 'trip only if >10 requests AND error rate >50%'\), \(2\) exponential backoff with full jitter for the Open state duration \(avoid fixed 30s windows\), \(3\) Half-Open state that allows exactly 1-3 requests to pass; if they succeed, transition to Closed, if any fail, go back to Open with longer timeout. This prevents thundering herds during recovery.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T15:19:38.093078+00:00— report_created — created