Skip Phoenix poller/monitor scheduling when SNMP disabled

JobCleanupTask was scheduling poller and monitor jobs for all SNMP-enabled
devices on every startup without checking phoenix_snmp_disabled. These jobs
would immediately bail out but still consumed queue capacity.

JobHealthCheckWorker had the same issue - recovering 'missing' monitor jobs
that would just no-op.

Both now check Client.phoenix_snmp_disabled() before scheduling.
This commit is contained in:
Graham McIntire 2026-02-17 07:05:40 -06:00
parent ee478a4817
commit 78aa415073
3 changed files with 21 additions and 6 deletions

View file

@ -1 +1 @@
/nix/store/zx636v118rzzqzwafgrw2aybh7l0szrl-pre-commit-config.json
/nix/store/4xlkmdd947h5qlhj2rmbyavq08grkz27-pre-commit-config.json

View file

@ -13,6 +13,7 @@ defmodule Towerops.Workers.JobCleanupTask do
alias Towerops.Devices
alias Towerops.Repo
alias Towerops.Snmp.Client
alias Towerops.Workers.DeviceMonitorWorker
alias Towerops.Workers.DevicePollerWorker
@ -64,6 +65,15 @@ defmodule Towerops.Workers.JobCleanupTask do
end
defp reschedule_all_devices do
if Client.phoenix_snmp_disabled() do
Logger.info("JobCleanupTask: Phoenix SNMP polling is disabled, skipping job rescheduling")
:ok
else
do_reschedule_all_devices()
end
end
defp do_reschedule_all_devices do
# Get all devices with SNMP enabled
devices =
Repo.all(

View file

@ -18,6 +18,7 @@ defmodule Towerops.Workers.JobHealthCheckWorker do
alias Towerops.Devices
alias Towerops.Repo
alias Towerops.Snmp.Client
alias Towerops.Workers.DeviceMonitorWorker
require Logger
@ -25,12 +26,16 @@ defmodule Towerops.Workers.JobHealthCheckWorker do
@impl Oban.Worker
@spec perform(Oban.Job.t()) :: :ok
def perform(%Oban.Job{}) do
monitor_recoveries = recover_missing_monitor_jobs()
if monitor_recoveries > 0 do
Logger.warning("Job health check recovered #{monitor_recoveries} missing monitor job(s)")
if Client.phoenix_snmp_disabled() do
Logger.debug("Job health check skipped: Phoenix SNMP polling is disabled")
else
Logger.debug("Job health check completed: all jobs healthy")
monitor_recoveries = recover_missing_monitor_jobs()
if monitor_recoveries > 0 do
Logger.warning("Job health check recovered #{monitor_recoveries} missing monitor job(s)")
else
Logger.debug("Job health check completed: all jobs healthy")
end
end
:ok