prop/config
Graham McIntire 66fef4f6da
perf(oban): move IEM-heavy queues off hot pods
Hot pods were running weather/narr/rtma/nexrad/contact_import
alongside LiveView and the hourly propagation chain. The weather
queue in particular hammers IEM with ASOS backfills; each Req
retry against a 429 stacks an in-worker Process.sleep, and enough
concurrent retries saturated the Ecto pool. Once DB checkouts
started queueing past 15 s the cascade was always the same:
Postgrex client timeouts → Oban.Notifier/Peer 5 s health checks
failing → /health readiness timeout → kubelet flipping the pod
out of the service endpoint set. One hot replica accumulated 11
restarts over 16 h.

Split the shared queue block: anything that's truly per-QSO
enrichment on demand (terrain, iemre, radar, mechanism, gefs,
ionosphere, space_weather, admin, exports, backfill_enqueue) stays
on both tiers, while weather/narr/rtma/nexrad/contact_import run
only on prop-backfill. The hot pods mark those as paused so the
queue entries still exist cluster-wide (Oban Pro's Smart engine
rejects `limit: 0`). Cluster capacity for the backfill queues is
unchanged; they just execute on the dedicated t620.
2026-04-23 10:53:26 -05:00
..
config.exs feat(workers): add GridCachePruneWorker 2026-04-21 13:19:52 -05:00
dev.exs feat(workers): add GridCachePruneWorker 2026-04-21 13:19:52 -05:00
prod.exs Configure outbound SMTP email via Swoosh with TLS 2026-04-02 13:08:50 -05:00
runtime.exs perf(oban): move IEM-heavy queues off hot pods 2026-04-23 10:53:26 -05:00
test.exs fix: stabilize flaky tests + silence PromEx Oban poller in test 2026-04-21 13:49:07 -05:00