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.
- 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.
- 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.
- 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.
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 modeThese lines only appear after pressing Manual refresh.
After restart, there are no WATCHLIST_WORKFLOW logs until this action.
File: server/app.ts
https://github.com/lakker/pulsarr/blob/main/server/app.ts
Search for:
watchlist
→ No worker initialization occurs here.
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.
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.
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.