Circuit Breaker Simulation
Circuit Breaker Simulation
Simulate a simple circuit breaker with states:
- Closed: requests flow; count consecutive failures.
- Open: requests are rejected until
resetTimeouthas elapsed since opening. - HalfOpen: allow one probe request; success closes, failure opens.
Rules:
- In Closed, increment
failureson failure; reset to 0 on success. - If
failures >= failureThreshold, transition to Open and recordopenedAt. - In Open, if
event.Time - openedAt < resetTimeout, reject the request. Otherwise transition to HalfOpen and evaluate the request. - In HalfOpen, a success -> Closed (failures=0); a failure -> Open (reset
openedAt).
Return a slice of booleans indicating whether each request was allowed.
Types
type Event struct {
Time int
Success bool
}
Function signature
func CircuitBreak(events []Event, failureThreshold int, resetTimeout int) []bool
Example
threshold=2, resetTimeout=10
Events: (t=0 fail), (t=1 fail), (t=2 success), (t=12 success)
Allowed: [true, true, false, true]
Constraints
0 <= len(events) <= 1000000 <= Time <= 1_000_0001 <= failureThreshold <= 10000 <= resetTimeout <= 1_000_000
Notes
- Events are ordered by time.
Run tests to see results
No issues detected