Barrier Circuit Breaker
This ADR is effective starting from v0.13.
TL;DR
Added optional circuitBreaker
to createBarrier
to allow adding custom circuit breaker logic to a Barrier.
ts
const authBarrier = createBarrier({
activateOn: {
failure: isHttpErrorCode(401),
},
perform: [getTokenMutation],
circuitBreaker({ performed, deactivated, $active, breakCircuit }) {
const $times = createStore(0);
sample({
clock: performed,
filter: $active,
source: $times,
fn: (times) => times + 1,
target: $times,
});
sample({
clock: $times,
filter: (times) => times > 10,
target: breakCircuit,
});
sample({
clock: deactivated,
target: $times.reinit,
});
},
});
Problem
TIP
Original issue: farfetched#458