Skip to content

[BUG] Watchlist workflow does not start on boot; only initializes after Manual refresh #944

@prilly-dev

Description

@prilly-dev

Bug Description

After restarting Pulsarr, the Watchlist workflow does not start automatically.
No Plex RSS events or scheduled reconciliations are processed until the user presses Manual refresh in the UI.

This causes watchlist ingestion to appear delayed for many hours, but in reality the worker is not running.

Steps To Reproduce

Restart Pulsarr.

Do not click Manual refresh.

Add a title to Plex Watchlist.

Wait 10+ minutes.

Observe: no processing, no WATCHLIST_WORKFLOW logs.

Click Manual refresh.

Observe: watchlist workflow immediately initializes and processes RSS.

Expected Behavior

Watchlist workflow should initialize and run automatically at application boot.

Screenshots

Plex Integration page (Self/Friends Watchlist enabled)

Watchlist page showing Manual refresh

Environment

Pulsarr Version: (from UI footer)

Deployment: Docker

OS: (host OS)

Browser: (browser)

Node Version: (from container logs)

Logs

Relevant Log Output [17:49:18 UTC] INFO: [WATCHLIST_WORKFLOW] Initializing Watchlist Workflow Service [17:49:21 UTC] INFO: [WATCHLIST_WORKFLOW] Periodic watchlist reconciliation job created (will be dynamically scheduled) [17:49:22 UTC] INFO: [WATCHLIST_WORKFLOW] Starting full reconciliation [17:49:26 UTC] INFO: [WATCHLIST_WORKFLOW] Full reconciliation completed [17:49:26 UTC] INFO: [WATCHLIST_WORKFLOW] Scheduled next periodic reconciliation in 120 minutes [17:49:26 UTC] INFO: [WATCHLIST_WORKFLOW] Watchlist workflow running in RSS mode

These lines only appear after pressing Manual refresh.
After restart, there are no WATCHLIST_WORKFLOW logs until this action.

Code References 1) Worker is not started at app bootstrap

File: server/app.ts
https://github.com/lakker/pulsarr/blob/main/server/app.ts

Search for:

watchlist

→ No worker initialization occurs here.

  1. Worker is started inside the watchlist service

File: server/services/watchlist/watchlist.service.ts
https://github.com/lakker/pulsarr/blob/main/server/services/watchlist/watchlist.service.ts

Look for the initializer call:

initializeWatchlistWorkflow();

This function is not called anywhere else.

  1. Manual refresh routes to the service

File: server/services/watchlist/watchlist.routes.ts
https://github.com/lakker/pulsarr/blob/main/server/services/watchlist/watchlist.routes.ts

The refresh route invokes the service method that calls the initializer.

  1. Worker initialization log

File: server/workers/watchlist.worker.ts
https://github.com/lakker/pulsarr/blob/main/server/workers/watchlist.worker.ts

logger.info('[WATCHLIST_WORKFLOW] Initializing Watchlist Workflow Service');

This log only appears when the initializer is called — which only happens after Manual refresh.

Additional Context

Because the worker is not started on boot, watchlist monitoring is silently disabled after every restart. Users must manually trigger it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions