RSS Feed Fetch Timeout #583

Open
opened 2026-09-18 14:47:14 +01:00 by Smithy-bot · 0 comments
Member

Epic: #528
Story Points:


Add a timeout to RSS feed fetches so a hung or slow URL cannot stall the polling loop.

Follow-up from the review on #579 / #530: FetchFeed currently calls rss-parser with no timeout.

Acceptance Criteria

GIVEN a valid http or https feed URL
WHEN RssFeedHelper.FetchFeed is called and the feed responds within the timeout
THEN the parsed feed is returned as today

GIVEN a valid http or https feed URL
WHEN the remote does not respond within 10 seconds
THEN FetchFeed throws a descriptive error (Failed to fetch or parse RSS feed: ...)
AND the call does not hang indefinitely

GIVEN an invalid URL
WHEN FetchFeed is called
THEN it still throws Invalid RSS feed URL before attempting a network request

Subtasks

  • Pass a timeout into rss-parser (or equivalent abort) from RssFeedHelper.FetchFeed
  • Default timeout to 10 seconds
  • Keep parse/network failures wrapped in the existing descriptive error
  • Update tests to cover timeout (or aborted fetch) behaviour

Notes

  • Raised in the #579 review: consider a fetch timeout when this is wired into a polling loop
  • Intended for use by the RSS timer (#534) so one slow feed cannot block the rest of a 15-minute tick
  • Suggested default: 10 seconds
Epic: #528 Story Points: --- Add a timeout to RSS feed fetches so a hung or slow URL cannot stall the polling loop. Follow-up from the review on #579 / #530: `FetchFeed` currently calls `rss-parser` with no timeout. ## Acceptance Criteria GIVEN a valid http or https feed URL WHEN `RssFeedHelper.FetchFeed` is called and the feed responds within the timeout THEN the parsed feed is returned as today GIVEN a valid http or https feed URL WHEN the remote does not respond within 10 seconds THEN `FetchFeed` throws a descriptive error (`Failed to fetch or parse RSS feed: ...`) AND the call does not hang indefinitely GIVEN an invalid URL WHEN `FetchFeed` is called THEN it still throws `Invalid RSS feed URL` before attempting a network request ## Subtasks - [ ] Pass a timeout into `rss-parser` (or equivalent abort) from `RssFeedHelper.FetchFeed` - [ ] Default timeout to 10 seconds - [ ] Keep parse/network failures wrapped in the existing descriptive error - [ ] Update tests to cover timeout (or aborted fetch) behaviour ## Notes - Raised in the #579 review: consider a fetch timeout when this is wired into a polling loop - Intended for use by the RSS timer (#534) so one slow feed cannot block the rest of a 15-minute tick - Suggested default: 10 seconds
Smithy-bot added this to the 3.4.0 milestone 2026-09-18 14:47:14 +01:00
Vylpes added this to the 3.3 Sprint 9 project 2026-09-23 18:39:13 +01:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
RabbitLabs/vylbot-app#583
No description provided.