Harden SPC parsing — one malformed feature currently aborts the whole poll cycle #62
Labels
No labels
area:ai
area:ci-cd
area:notifications
area:observability
area:public-pages
backlog
bug
duplicate
enhancement
help wanted
invalid
question
type:decision
type:feature
type:infra
type:maintenance
type:security
v1.0.1
v1.1.0
v1.2.0
v1.3.0
v2.0.0
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/WeatherBot#62
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Per-feature parsing (
_parse_convective_featureand siblings,app/services/spc.py:190-242) sits outside the fetch try/except; a
non-numeric
dnraises through the unguardedasyncio.gathercalls inpoll_spc/poll_spc_dashboard(spc_processor.py:92-111, 695-724) and killsthe entire cycle. Wrap per-feature parses (log + skip) and gather with
return_exceptions=True, handling per-source failures individually so onebad product/day doesn't take out the rest. Record parse failures via the
existing freshness observability.
Acceptance criteria:
dnvalueFiled from the 2026-07-17 codebase audit (
docs/.internal/report-2026-07-17.md), finding F-23.Fixed in #92 (merged to
main). Per-feature SPC parsing is now wrapped (log + skip the bad feature) and thepoll_spc/poll_spc_dashboardgathers usereturn_exceptions=Truewith per-source handling, so one malformed feature (e.g. a non-numericdn) or one failing source no longer aborts the whole cycle. Test covers a baddnvalue skipped while good features still parse.