Packages

A simple Elixir package that provides circuit breaker manager

Current section

Files

Jump to
virgil lib telemetry circuit_handler.ex
Raw

lib/telemetry/circuit_handler.ex

defmodule Virgil.Telemetry.CircuitHandler do
@moduledoc false
require Logger
alias Virgil.Config
def handle_event([:virgil, :circuit, :success], _measurements, _metadata, _config) do
Logger.debug("Success circuit event received")
end
def handle_event([:virgil, :circuit, :failure], _measurements, %{circuit: circuit}, _config) do
Logger.debug("[#{__MODULE__}] [#{circuit}] Received failure event")
{:ok, error_counter} = circuit_manager().increment_error_counter(circuit)
if error_counter >= circuit.error_threshold() do
circuit_manager().open(circuit)
end
end
defp circuit_manager, do: Config.circuit_manager()
end