prop/lib/microwaveprop/workers
Graham McIntire 004f302374
fix(hrrr): mark contacts :unavailable on failed fetch tasks
When the Rust hrrr-point-worker marks a task as `failed` (upstream
`idx HTTP 404` or wgrib2 decode error on old archive formats), the
corresponding contacts sit at `hrrr_status = :queued` until the
generic 3-day stale-queued reconcile flips them. Speed that up: on
every BackfillEnqueue tick, join contacts to `hrrr_fetch_tasks` by
rounded HRRR hour and flip any `:queued` contact whose cycle is
permanently `failed` to `:unavailable` immediately.

Motivation: a handful of 2018-08-04/05 cycles (t20z/t21z/t15z/t17z)
are genuinely missing `wrfsfcf`/`wrfprsf` files on the NOAA S3
archive — other hours on the same dates are fine, so this is an
upstream data gap rather than a structural pre-2019 issue. Users
see an accurate "Partial" marker on those contacts instead of a
three-day `:queued` stall.

Tested: 4 new cases covering rounding, failed-vs-done, and the
`hrrr not in types` skip branch; full suite 2283/0.
2026-04-22 17:46:51 -05:00
..
admin_task_worker.ex fix(review): address code-reviewer findings 2026-04-21 10:09:46 -05:00
backfill_enqueue_worker.ex fix(hrrr): mark contacts :unavailable on failed fetch tasks 2026-04-22 17:46:51 -05:00
canadian_sounding_fetch_worker.ex fix(dialyzer): clear 125+ warnings under strict flags 2026-04-21 10:30:06 -05:00
common_volume_radar_worker.ex perf+hygiene: batch 1 of system-review fixes 2026-04-21 17:06:07 -05:00
contact_import_worker.ex perf+hygiene: batch 1 of system-review fixes 2026-04-21 17:06:07 -05:00
contact_position_backfill_worker.ex test: override stale distance_km when filling a missing pos 2026-04-16 14:09:45 -05:00
contact_weather_enqueue_worker.ex fix(backfill): stop clobbering :complete enrichment statuses 2026-04-22 13:54:05 -05:00
gefs_fetch_worker.ex refactor(scores): rename file extension .ntms -> .prop with legacy reads 2026-04-21 15:54:12 -05:00
grid_cache_prune_worker.ex feat(workers): add GridCachePruneWorker 2026-04-21 13:19:52 -05:00
hrrr_native_grid_worker.ex refactor(db): use explicit on_conflict set clauses over :replace_all_except 2026-04-21 14:22:15 -05:00
iemre_fetch_worker.ex fix(workers): unique dedup on polling workers so queued dups don't stack 2026-04-21 14:12:43 -05:00
ionosphere_fetch_worker.ex perf+hygiene: batch 1 of system-review fixes 2026-04-21 17:06:07 -05:00
mechanism_classify_worker.ex fix(workers): propagate transient errors so Oban retries + counters fire 2026-04-21 13:15:27 -05:00
narr_fetch_worker.ex fix(dialyzer): clear 125+ warnings under strict flags 2026-04-21 10:30:06 -05:00
nexrad_worker.ex refactor(db): use explicit on_conflict set clauses over :replace_all_except 2026-04-21 14:22:15 -05:00
propagation_grid_worker.ex feat(observability): instrument PropagationGridWorker with Instrument.span 2026-04-21 13:29:09 -05:00
propagation_prune_worker.ex fix(propagation): hourly grid chain preempts MRMS/prune backlog 2026-04-19 08:42:22 -05:00
radar_frame_worker.ex refactor(db): use explicit on_conflict set clauses over :replace_all_except 2026-04-21 14:22:15 -05:00
rtma_fetch_worker.ex fix(workers): unique dedup on polling workers so queued dups don't stack 2026-04-21 14:12:43 -05:00
solar_index_worker.ex fix(dialyzer): clear 125+ warnings under strict flags 2026-04-21 10:30:06 -05:00
space_weather_fetch_worker.ex SpaceWeather: SWPC JSON ingestion (Kp, F10.7, GOES X-ray) 2026-04-15 14:55:24 -05:00
terrain_profile_worker.ex fix(dialyzer): clear 125+ warnings under strict flags 2026-04-21 10:30:06 -05:00
weather_fetch_worker.ex refactor(format): consolidate number/bytes formatters + handle flaky IEM transports 2026-04-21 17:09:41 -05:00