From: review-reports/architect.md finding #12
Where: data/repo/SyncService.kt:78-85, data/repo/EpgFetchService.kt:69-75, data/tmdb/MovieEnrichmentService.kt:80-130
Issue: All HTTP calls use a single OkHttpClient.execute() with no retry logic. If the call fails, the entire operation fails or silently skips the item. On Fire Stick with flaky WiFi, a transient network blip during the 150 MB EPG download loses the entire fetch. TMDB enrichment silently skips failed movies with no retry queue.
Fix:
- Add an OkHttp interceptor with exponential backoff for HTTP 429, 5xx, and
IOException (3 retries with 1s/2s/4s delays).
- For TMDB enrichment specifically, add a
retry_attempted_at timestamp on movies so subsequent enrichBatch calls pick up previously-failed items.
User impact: libraries stay more complete when WiFi is flaky; EPG doesn't vanish after a minor network hiccup.
From:
review-reports/architect.mdfinding #12Where:
data/repo/SyncService.kt:78-85,data/repo/EpgFetchService.kt:69-75,data/tmdb/MovieEnrichmentService.kt:80-130Issue: All HTTP calls use a single
OkHttpClient.execute()with no retry logic. If the call fails, the entire operation fails or silently skips the item. On Fire Stick with flaky WiFi, a transient network blip during the 150 MB EPG download loses the entire fetch. TMDB enrichment silently skips failed movies with no retry queue.Fix:
IOException(3 retries with 1s/2s/4s delays).retry_attempted_attimestamp on movies so subsequentenrichBatchcalls pick up previously-failed items.User impact: libraries stay more complete when WiFi is flaky; EPG doesn't vanish after a minor network hiccup.