mirror of https://github.com/pixelfed/pixelfed
renovate/pestphp-pest-5.x-lockfile
shleeable-patch-1
l10n_crowdin_translations
renovate/phpstan-packages
renovate/lock-file-maintenance
renovate/guzzlehttp-guzzle-8.x-lockfile
renovate/github-actions
staging
dev
fix/timeline-feed-state-header
fix/username-case-insensitive
configcache-v2.1-api
fix/dm-remote-delete-media-leak
fix/hashtags-outside-bmp
copilot/review-old-issues
groups
vue3
v0.1.9
v0.10.0
v0.10.1
v0.10.10
v0.10.2
v0.10.3
v0.10.4
v0.10.5
v0.10.6
v0.10.7
v0.10.8
v0.10.9
v0.11.0
v0.11.1
v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.2
v0.11.3
v0.11.4
v0.11.5
v0.11.6
v0.11.7
v0.11.8
v0.11.9
v0.12.0
v0.12.1
v0.12.10
v0.12.11
v0.12.12
v0.12.2
v0.12.3
v0.12.4
v0.12.5
v0.12.6
v0.12.7
v0.12.8
v0.12.9
v0.13.0
v0.14.0
v0.14.1
v0.14.2
v0.14.3
v0.14.4
v0.14.5-rc
v0.14.5-rc1
v0.15.0
v0.15.0-rc1
v0.15.1
v0.15.2
v0.5.9
v0.6.0
v0.6.1
v0.7.6
v0.8.0
v0.8.5
v0.8.6
v0.9.0
v0.9.4
v0.9.5
v0.9.6
${ noResults }
1 Commits (dev)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
78c0b65222 |
Record a genuinely empty feed under its own key
A feed with nothing in it and a feed that was never built look the same from Redis: neither has a key. That is why the read path could not tell "nothing to show" from "needs building", and why the only bookkeeping it had was a 300-second marker written before the outcome was known and evicted by nothing. The trait now carries an empty-warm guard keyed on the resolved feed key, holding the timestamp at which it lapses with a matching cache TTL. It is written only by a warm that published nothing and resolved every candidate it found: a candidate that would not resolve means the warm did not finish, so the feed stays eligible and the failure is logged. A forced warm never consults it. Eviction is automatic for the instance-wide feeds through setAdd, and explicit for home feeds, which have no key for a write to reach: the author's own post, a followed local or remote account posting, a new follow, and a followed hashtag getting a post all clear it. None of them creates the feed key, so a follower who has never loaded a timeline still does not get one. |
7 days ago |