Skip to content

fix(deploy): restart orphaned podcast worker + prevent start-limiter wedge#115

Merged
ralyodio merged 1 commit into
masterfrom
fix/podcast-worker-deploy-restart
Jun 21, 2026
Merged

fix(deploy): restart orphaned podcast worker + prevent start-limiter wedge#115
ralyodio merged 1 commit into
masterfrom
fix/podcast-worker-deploy-restart

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Problem

Podcast episode ingestion stopped on 2026-06-07 (confirmed via max(podcast_episodes.created_at) on the bittorrented Supabase project) — ~2 weeks with no new episodes for subscribers.

bittorrented-podcast-worker is a separate long-running systemd process (pnpm podcast-worker) that next start does not recreate. During the June-7 mise/pnpm path drift it crash-looped, hit systemd's start limiter, went failed, and stayed dead — because deploy-droplet.yml only restarts the main app + iptv worker, never the podcast worker, and its unit lacked StartLimitIntervalSec=0.

Fix

  • deploy-droplet.yml: reset-failed + restart bittorrented-podcast-worker on every deploy (plus reset-failed for the iptv worker for parity); report its status in the verify step.
  • setup-server.sh: add StartLimitIntervalSec=0 to the podcast worker unit so a transient crash self-heals instead of wedging permanently.

Note on live recovery

This restores the worker automatically on the next deploy. To recover prod immediately without waiting, run on the droplet:

sudo systemctl reset-failed bittorrented-podcast-worker && sudo systemctl restart bittorrented-podcast-worker

🤖 Generated with Claude Code

…wedge

The bittorrented-podcast-worker systemd service is a separate long-running
process that `next start` does not recreate. When it crash-looped during the
June-7 mise/pnpm path drift it hit systemd's start limiter, went `failed`, and
stayed dead for ~2 weeks: podcast episode ingestion stopped on 2026-06-07
because deploy-droplet.yml only restarts the main app + iptv worker, never the
podcast worker, and its unit lacked StartLimitIntervalSec=0.

- deploy-droplet.yml: reset-failed + restart bittorrented-podcast-worker on
  every deploy (and reset-failed the iptv worker for parity); report its status.
- setup-server.sh: add StartLimitIntervalSec=0 to the podcast worker unit so a
  transient crash self-heals instead of wedging permanently.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

vu1nz Security Review

0 finding(s) in PR #?

No security issues found.

@ralyodio ralyodio merged commit 0cbb9af into master Jun 21, 2026
7 checks passed
@ralyodio ralyodio deleted the fix/podcast-worker-deploy-restart branch June 21, 2026 08:16
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.

1 participant