diff --git a/lib/towerops_web/telemetry.ex b/lib/towerops_web/telemetry.ex index da65428c..55c32714 100644 --- a/lib/towerops_web/telemetry.ex +++ b/lib/towerops_web/telemetry.ex @@ -143,35 +143,49 @@ defmodule ToweropsWeb.Telemetry do queues = ["default", "discovery", "polling", "monitoring", "maintenance"] for queue <- queues do - case Exq.Api.queue_size(Exq, queue) do - {:ok, size} -> - :telemetry.execute( - [:towerops, :exq, :queue, :size], - %{value: size}, - %{queue: queue} - ) + try do + case Exq.Api.queue_size(Exq, queue) do + {:ok, size} -> + :telemetry.execute( + [:towerops, :exq, :queue, :size], + %{value: size}, + %{queue: queue} + ) - _error -> - :ok + _error -> + :ok + end + rescue + _ -> :ok + catch + :exit, _ -> :ok end end - with {:ok, processes} <- Exq.Api.processes(Exq), - {:ok, busy} <- Exq.Api.busy(Exq) do - :telemetry.execute( - [:towerops, :exq, :processes, :busy], - %{value: length(busy)}, - %{} - ) + try do + with {:ok, processes} <- Exq.Api.processes(Exq), + {:ok, busy} <- Exq.Api.busy(Exq) do + :telemetry.execute( + [:towerops, :exq, :processes, :busy], + %{value: length(busy)}, + %{} + ) - :telemetry.execute( - [:towerops, :exq, :processes, :total], - %{value: length(processes)}, - %{} - ) + :telemetry.execute( + [:towerops, :exq, :processes, :total], + %{value: length(processes)}, + %{} + ) + end + rescue + _ -> :ok + catch + :exit, _ -> :ok end :ok + rescue + _ -> :ok catch # Catch exits (like :noproc) and exceptions _, _ -> :ok