towerops/config
Graham McIntire d9bf4f260b fix(monitoring): stop CheckExecutorWorker duplicate job buildup with unique constraint
CheckExecutorWorker had no Oban `unique` constraint, so every insert path
created a fresh job row: self-scheduling, JobHealthCheckWorker, the check
form/API/GraphQL, and — the main amplifier — Monitoring.schedule_check/1
called unconditionally by snmp.ex discovery after create_check/1, which is
an upsert that returns {:ok, check} even when the check already exists.
Every SNMP discovery pass re-enqueued a job for every existing check, so
the check_executors queue grew to ~70k jobs for ~5.7k checks and stopped
draining.

Add `unique: [keys: [:check_id], states: [:available, :scheduled,
:retryable], period: :infinity]`. `:executing` is excluded so perform/1's
self-reschedule does not conflict with its own running job.

Also add the `checks` and `check_executors` queues to config/dev.exs —
they were missing from dev entirely (prod's runtime.exs already had them).
2026-05-14 14:01:07 -05:00
..
config.exs fix: resolve session salts at runtime so prod release boots 2026-05-12 16:26:54 -05:00
dev.exs fix(monitoring): stop CheckExecutorWorker duplicate job buildup with unique constraint 2026-05-14 14:01:07 -05:00
prod.exs fix: H12 cookie hardening + 5 low/medium bugs (L2, L5, L6, L8, L10, L11) 2026-05-12 11:22:47 -05:00
runtime.exs fix: H11 — load session salts from env vars instead of hardcoded 8-byte values 2026-05-12 14:03:31 -05:00
test.exs fix: resolve session salts at runtime so prod release boots 2026-05-12 16:26:54 -05:00