From 78aa4150730b692b367e7ef432faedd99038df1a Mon Sep 17 00:00:00 2001 From: Graham McIntie Date: Tue, 17 Feb 2026 07:05:40 -0600 Subject: [PATCH] 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. --- .pre-commit-config.yaml | 2 +- lib/towerops/workers/job_cleanup_task.ex | 10 ++++++++++ lib/towerops/workers/job_health_check_worker.ex | 15 ++++++++++----- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 173daa95..3498c83d 120000 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1 +1 @@ -/nix/store/zx636v118rzzqzwafgrw2aybh7l0szrl-pre-commit-config.json \ No newline at end of file +/nix/store/4xlkmdd947h5qlhj2rmbyavq08grkz27-pre-commit-config.json \ No newline at end of file diff --git a/lib/towerops/workers/job_cleanup_task.ex b/lib/towerops/workers/job_cleanup_task.ex index eace5e48..a608c424 100644 --- a/lib/towerops/workers/job_cleanup_task.ex +++ b/lib/towerops/workers/job_cleanup_task.ex @@ -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( diff --git a/lib/towerops/workers/job_health_check_worker.ex b/lib/towerops/workers/job_health_check_worker.ex index 98ec9838..38c3b428 100644 --- a/lib/towerops/workers/job_health_check_worker.ex +++ b/lib/towerops/workers/job_health_check_worker.ex @@ -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