project-nomad/admin/app
chriscrosstalk de6f453fa7
fix(downloads): don't 500 the jobs endpoint on an orphaned BullMQ job (#1191)
A job id can outlive its payload hash. BullMQ still returns an entry for
it with empty `data`, so `normalize(job.data.filepath)` threw and took the
whole response with it.

`fetchJobsWithStates()` includes failed jobs, and failed jobs are retained
deliberately, so one orphan made GET /api/downloads/jobs throw on every
call, permanently. Content Explorer polls that endpoint every ~3s, so the
symptom was a 500 loop and a page that never loaded. It survived restarts
and only cleared by editing Redis by hand.

Drop entries with no usable payload at the source, and guard both
normalize() calls (the pmtiles-extract map had the same pattern). With no
payload there is nothing to render anyway.

Seen on NOMAD3 running rc.3: 93 occurrences in 15 minutes.

Closes #1190

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-02 12:58:53 -07:00
..
controllers fix(UI): add API reference to Settings sidebar 2026-07-24 03:46:30 +00:00
data refactor(drug-reference): make collections JSON the single source for curated data (#1130) 2026-07-21 15:50:47 -07:00
exceptions fix(Docs): documentation renderer fixes 2025-12-23 16:00:33 -08:00
jobs Add offline FDA drug reference (labels, interaction view, conditions, remedies) (#1040) 2026-07-21 11:06:18 -07:00
middleware fix(API): skip compression for Server-Sent Events (#798) 2026-05-20 10:16:00 -07:00
models feat(benchmark): official multi-arch sysbench, resolved digest, platform metadata (#1158) 2026-07-27 10:26:38 -07:00
services fix(downloads): don't 500 the jobs endpoint on an orphaned BullMQ job (#1191) 2026-08-02 12:58:53 -07:00
utils feat: support gated downloads for self-hosted curated content (#1172) 2026-08-02 12:23:00 -07:00
validators feat: support gated downloads for self-hosted curated content (#1172) 2026-08-02 12:23:00 -07:00