Changes
🚀 New Features
Service Availability Protection
- Smart Service Health Checks prevent content addition when Radarr/Sonarr are unavailable
- Structured Error Handling with new
ExistenceCheckResulttype for detailed status reporting - Bulk Sync Protection extends availability checks to periodic synchronization
- Graceful Degradation maintains approval requests even when services are down
Enhanced Content Verification
- Efficient TMDB/TVDB Lookups using dedicated API endpoints
- Multi-Instance Support checks all configured instances before processing
- Intelligent Deferral skips unavailable services for later retry
Periodic Reconciliation
- Plex Pass Independent sync now runs regardless of RSS feed availability
- 20-minute Forced Sync ensures content is processed even during RSS failures
- Enhanced Fallback mechanisms for improved reliability
🐛 Bug Fixes
Critical Issues Resolved
- Fixed misleading sync stats showing "added: 1321" when services were down
- Prevented failed API calls during service outages
- Corrected counter logic to only count successful additions
- Resolved race conditions between immediate and bulk sync operations
GUID Matching Improvements
- Centralized GUID utilities for consistent processing across services
- Fixed duplicate detection with improved matching algorithms
- Normalized GUID formats (provider://id → provider:id)
🔧 Technical Implementation
Core Changes
- New Type System -
ExistenceCheckResultinterface for standardized responses - Service Methods - Added
movieExistsByTmdbId()andseriesExistsByTvdbId() - Availability Checks - New methods in watchlist workflow for service health
- Error Handling - Structured responses instead of exceptions
Modified Files
- Service layer enhancements across Radarr/Sonarr managers and services
- Watchlist workflow with comprehensive availability checking
- New service result types for consistent error handling
- GUID handler utilities with centralized processing
📊 Impact Summary
-
6 files changed with ~400 lines of availability checking logic
-
Zero breaking changes - fully backward compatible
-
Prevents thousands of failed API calls during outages
-
Accurate reporting of actual successful operations
-
Maintained approval flow regardless of service availability
-
Service Availability Checks, Periodic Reconciliation & GUID Matching Improvements (#428) @jamcalli
-
📝 Add docstrings to
develop(#429) @coderabbitai -
feat: add service unavailable checks before adding content to prevent approvals (#427) @jamcalli
-
feat: add periodic reconciliation regardless of plex pass status (#425) @jamcalli
-
feat: refactor guid matching and ensure central util usage (#423) @jamcalli
-
fix: added syncwatchlistitems to else clause (#422) @jamcalli
-
fix: disabled rules messing with processQueue (#421) @jamcalli
Docker
docker pull lakker/pulsarr:0.4.17
Contributors
@coderabbitai, @coderabbitai[bot] and @jamcalli