What happened?
A single broken YT channel (deleted, private, timing out on fetch consistently) freezes the entire subscription feed. New videos from subscribed channels won't appear until the broken channel is either restored upstream, the user unsubscribes from it or the locally previous feed snapshot expires.
SubscriptionFeedService.kt#L124-L12 discards the entire refresh snapshot whenever a source fails and a previous snapshot exists:
val valid = result.failedSources == 0 || previous == null && result.successfulSources > 0 || subscriptions.isEmpty()
For permanently removed channels, the fetch fails forever, so the feed never gets updated until the cached snapshot expires after its 24h TTL, resulting in ONE feed update every ~24h for the user.
Maybe accept partial success and publish whatever succeededs? Failing sources are getting processed again during the next scheduled refresh anyways.
The validation would just be should be
val valid = result.successfulSources > 0 || subscriptions.isEmpty()
I'm not sure how cached videos from failed channels should be handled. Removing them from the feed and logging the failed channels seems like the safest and also simplest approach. But then, if a channel fetch fails only temporarily, keeping the cached videos be the better user experience? It really depends on why the fetch failed, so not sure.
Steps to reproduce
- Subscribe to at least one working channel and one terminated/deleted channel
- Wait for the working channel to upload a new video
- Check subscription feed
- The new video never appears with
event=refresh_kept_previous warnings in the log
Area
Backend (API / extraction)
Channel
main (stable)
Anything else?
No response
What happened?
A single broken YT channel (deleted, private, timing out on fetch consistently) freezes the entire subscription feed. New videos from subscribed channels won't appear until the broken channel is either restored upstream, the user unsubscribes from it or the locally previous feed snapshot expires.
SubscriptionFeedService.kt#L124-L12discards the entire refresh snapshot whenever a source fails and a previous snapshot exists:For permanently removed channels, the fetch fails forever, so the feed never gets updated until the cached snapshot expires after its 24h TTL, resulting in ONE feed update every ~24h for the user.
Maybe accept partial success and publish whatever succeededs? Failing sources are getting processed again during the next scheduled refresh anyways.
The validation would just be should be
I'm not sure how cached videos from failed channels should be handled. Removing them from the feed and logging the failed channels seems like the safest and also simplest approach. But then, if a channel fetch fails only temporarily, keeping the cached videos be the better user experience? It really depends on why the fetch failed, so not sure.
Steps to reproduce
event=refresh_kept_previouswarnings in the logArea
Backend (API / extraction)
Channel
main (stable)
Anything else?
No response