diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-08-22 01:06:35 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-08-22 01:06:35 +0000 |
| commit | 429594e6bc1069f7e7141060df3a0fd8bf63749b (patch) | |
| tree | e9aa74d339a7f3fa06aa4cce70858fd0260f4177 /gradle | |
| parent | 2352cb39d9623074192a6a1a7fec47e22ab4606b (diff) | |
Concurrent feed fetching with durable fetch-result tracking
Feeds are fetched with bounded concurrency (semaphore of 8) instead of
strictly sequentially -- with 100+ subscriptions, one slow/stalling
server no longer delays every feed queued behind it. A process-local
mutex prevents the periodic and manual/alarm-triggered one-time
fetches (two different WorkManager unique-work names, so its own dedup
doesn't cover this) from ever running concurrently and racing writes
to the same feed rows.
Settings.recordFetchResult persists lastFetchAt/lastFetchNewArticles
on every run, not derived from WorkInfo.State -- a PeriodicWorkRequest
cycles back to ENQUEUED after every successful run and never reaches
SUCCEEDED, so anything watching for that only ever saw manual fetches.
ArticleListScreen surfaces this as a "N new articles" snackbar
(acknowledged durably, so returning to the screen doesn't re-show it)
and computes live "Checking feed X of Y" progress from the worker's
tagged WorkInfo, scoped to the Unread/Older views that actually
aggregate every subscription.
Diffstat (limited to 'gradle')
0 files changed, 0 insertions, 0 deletions
