prop/lib/microwaveprop/workers
Graham McIntire 14a2284321
Handle CDS "rejected" status + widen submit cap headroom
CDS returns status="rejected" (distinct from "failed") when a submit
is rate-limited past the 150-job per-user cap. The poll worker's
interpret_status_body treated this as an unknown status → generic
retryable error → 10 retries → discarded. 102 jobs hit this path
overnight.

Fix:
  * Era5Client.check_status/1 now returns {:rejected, reason} (and
    treats "dismissed" the same way — that's the status a manually
    deleted job transitions to).
  * Era5PollWorker handles :rejected exactly like :not_found: drop the
    DB row, clean up the sibling CDS job, re-enqueue the submit, and
    discard the current Oban job so it doesn't burn attempts retrying
    a terminal state.
  * Widened Era5SubmitWorker cap headroom from 10 → 30 (effective
    ceiling 120 not 140). The race between concurrent workers all
    passing the count check simultaneously meant we were reaching 141
    in-flight against the 150 hard cap; 30 slots of headroom tolerates
    a ~15-worker race before clipping CDS's ceiling.

Refactored handle_row/1 into handle_row + handle_non_both_done with a
leg_outcome/1 tag helper so the cross-product of leg statuses collapses
to a single pair match (credo complexity limit).
2026-04-14 08:26:42 -05:00
..
admin_task_worker.ex Fix all remaining credo --strict issues (0 issues) 2026-04-12 10:26:53 -05:00
asos_adjustment_worker.ex Add MRMS rain mosaic, fix beacons crash, fix UTC clock flash 2026-04-12 14:49:20 -05:00
backfill_enqueue_worker.ex Give up on stuck :queued backfill contacts after 3 days 2026-04-13 17:20:18 -05:00
canadian_sounding_fetch_worker.ex Ingest Canadian radiosondes via UWYO + plans for RDPS/HRDPS 2026-04-13 09:14:34 -05:00
contact_weather_enqueue_worker.ex Fix credo warnings: struct specs, length/1, and test patterns 2026-04-12 10:26:53 -05:00
era5_fetch_worker.ex Batch ERA5 fetches by month and 2° tile 2026-04-09 13:01:49 -05:00
era5_month_batch_worker.ex Split ERA5 backfill into submit/poll workers with persistent CDS state 2026-04-13 16:26:26 -05:00
era5_poll_worker.ex Handle CDS "rejected" status + widen submit cap headroom 2026-04-14 08:26:42 -05:00
era5_submit_worker.ex Handle CDS "rejected" status + widen submit cap headroom 2026-04-14 08:26:42 -05:00
hrrr_fetch_worker.ex Fix credo warnings: struct specs, length/1, and test patterns 2026-04-12 10:26:53 -05:00
hrrr_native_grid_worker.ex Fix all remaining credo --strict issues (0 issues) 2026-04-12 10:26:53 -05:00
iemre_fetch_worker.ex Fix credo warnings: struct specs, length/1, and test patterns 2026-04-12 10:26:53 -05:00
mrms_fetch_worker.ex Add MRMS rain mosaic, fix beacons crash, fix UTC clock flash 2026-04-12 14:49:20 -05:00
nexrad_worker.ex Fix NexradWorker UUID type: use generate() not bingenerate() for insert_all 2026-04-10 14:13:38 -05:00
propagation_grid_worker.ex Wire NEXRAD, native ducts, and commercial links into scoring 2026-04-13 12:08:15 -05:00
propagation_prune_worker.ex Decouple propagation_scores pruning from the compute worker 2026-04-09 12:30:10 -05:00
rtma_fetch_worker.ex Add ERA5 reanalysis and RTMA data sources 2026-04-07 12:04:16 -05:00
solar_index_worker.ex Database performance fixes and async backfill enqueue 2026-04-04 19:19:18 -05:00
terrain_profile_worker.ex Fix all remaining credo --strict issues (0 issues) 2026-04-12 10:26:53 -05:00
weather_fetch_worker.ex Fix all remaining credo --strict issues (0 issues) 2026-04-12 10:26:53 -05:00