Skip to content
On this page

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

Released under the MIT License.