fix(oban): use paused queues instead of local_limit:0 on backfill pods

Oban Pro 2.21.1's Smart engine rejects `local_limit: 0` with
"local_limit must be greater than 0", OOMing the backfill pod on every
boot since the upgrade. Switch the disable pattern to
`[local_limit: 1, paused: true]` so the queue still exists (satisfying
the validator) but processes nothing. Verified under PROP_ROLE=backfill
the four hot queues (propagation, commercial, solar, enqueue) resolve
to paused=true and the others keep their normal concurrency.
This commit is contained in:
Graham McIntire 2026-04-19 15:41:32 -05:00
parent fd95a82478
commit cdfbe85485
No known key found for this signature in database
GPG key ID: F4ABF488E6029E59

View file

@ -167,10 +167,17 @@ if config_env() == :prod do
# config/config.exs sets a base Oban config (queues + cron) that Config
# deep-merges with runtime.exs. To actually drop the hot-path queues on
# backfill pods we have to explicitly override them to `limit: 0` rather
# than just leaving them out — Config deep merge by key means omitted
# values fall through to the compile-time defaults.
disabled_hot_queues = [propagation: 0, commercial: 0, solar: 0, enqueue: 0]
# backfill pods we can't use `limit: 0` — Oban Pro's Smart engine
# rejects it with "local_limit must be greater than 0". Instead override
# each queue with `paused: true` (queue exists, processes nothing).
paused_queue = [local_limit: 1, paused: true]
disabled_hot_queues = [
propagation: paused_queue,
commercial: paused_queue,
solar: paused_queue,
enqueue: paused_queue
]
oban_queues =
case prop_role do