Skip to content

Handle a bunch of potential crashes / memory leaks#97

Open
katzj wants to merge 6 commits intomainfrom
crash-fixes
Open

Handle a bunch of potential crashes / memory leaks#97
katzj wants to merge 6 commits intomainfrom
crash-fixes

Conversation

@katzj
Copy link
Copy Markdown
Member

@katzj katzj commented Apr 1, 2026

No description provided.

katzj added 6 commits April 1, 2026 15:56
Avoids allocating a new client on every HTTP request.
Fixes potential panics in drupal, elm, pub, cpan, pypi_rss, hackage,
packagist, and cocoapods ingestors when upstream feeds change format.
Each bad item is now logged as a warning and skipped rather than
crashing the process.
The channel was created inside run() so Publish() could send on a nil
channel if called before the goroutine was scheduled. Move the make()
into NewPipeline() to guarantee it exists before any caller can use it.
gofeed returns *time.Time for PublishedParsed/UpdatedParsed; they are nil
when a feed entry omits the date field. Dereference without a nil check
panics. Adds guards in elm, cpan, hackage, packagist, pub, cocoapods, and
pypi_rss (three call sites).
Without recover(), a panic in any ingestor kills the whole process.
The deferred recover logs the panic and lets the goroutine exit cleanly;
the cron scheduler will fire ingestAndPublish again on the next tick.
- randomHex: log.WithFields was missing the terminal .Error() call so
  rand.Reader failures were silently swallowed
- LPush: capture and log the error return so Redis failures are visible
  rather than silently dropping jobs
@katzj katzj requested a review from tiegz April 1, 2026 20:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants