According to Marc Brooker, circuit breakers can misinterpret a partial failure as total system failure and inadvertently bring down the entire system. In particular, sharded systems and cell-based architectures are vulnerable to this issue. A workaround is that the server indicates to the client which specific part is overloaded and the client uses a corresponding mini circuit breaker. However, this workaround can be complex and expensive.<ref>{{Cite book |title=Understanding Distributed Systems |isbn=9781838430214}}</ref><ref>{{Cite web |title=Will circuit breakers solve my problems? |url=https://brooker.co.za/blog/2022/02/16/circuit-breakers.html}}</ref>
When everything is normal, the circuit breakers remain ''closed'', and all the request passes through to the services. If the number of failures increases beyond the threshold, the circuit breaker trips and goes into an ''open'' state.
In this state circuit breaker returns an error immediately without even invoking the services. The Circuit breakers move into the ''half-open'' state after a timeout period elapses. Usually, it will have a monitoring system where the timeout will be specified.
{{clear}}
=== Half-open state ===
[[File:Circuit Breaker -Half Open state.png|thumb|Half-open state]]
In this state, the circuit breaker allows a limited number of requests from the service to pass through and invoke the operation. If the requests are successful, then the circuit breaker will go to the ''closed'' state. However, if the requests continue to fail, then it goes back to ''open'' state.