Problem
The RSS feeds introduced in #1320 have two issues:
-
Stale timestamps for rebuilds: iter_releases() and iter_projects() use Min("file_added_at") to aggregate timestamps. When new files are added for an existing (name, version) pair (e.g., a rebuild with a different PEP 427 build tag), the feed continues to show the original timestamp. The <guid> also stays the same, so RSS readers never surface the rebuild as a new item.
-
Low update limit: UPDATES_LIMIT is 100, which is too small for indexes that receive batch promotions of 100+ packages at once. Items beyond the limit are silently truncated.
Proposed Fix
- Change
Min to Max on all aggregations so the feed reflects the most recently added file.
- Append a
#timestamp fragment to the <guid> so RSS readers treat each rebuild as a new item. Set isPermaLink="false" accordingly.
- Raise
UPDATES_LIMIT from 100 to 500.
Reproducer
# Feed only shows build-tag -1 (Sep 5), missing -2 (Sep 8):
curl -s '.../rss/project/ctranslate2/releases.xml' \
| python3 -c "import sys,xml.etree.ElementTree as ET; [print(f'{i.findtext(\"title\")} — {i.findtext(\"pubDate\")}') for i in ET.fromstring(sys.stdin.read()).findall('.//item')]"
# Pulp content API shows both build tags:
curl -s '.../api/v3/content/python/packages/?name=ctranslate2&version=4.8.2&limit=5&fields=filename,pulp_created&ordering=-pulp_created' \
| jq -r '.results[] | "\(.filename) — \(.pulp_created[:19])"'
Problem
The RSS feeds introduced in #1320 have two issues:
Stale timestamps for rebuilds:
iter_releases()anditer_projects()useMin("file_added_at")to aggregate timestamps. When new files are added for an existing(name, version)pair (e.g., a rebuild with a different PEP 427 build tag), the feed continues to show the original timestamp. The<guid>also stays the same, so RSS readers never surface the rebuild as a new item.Low update limit:
UPDATES_LIMITis 100, which is too small for indexes that receive batch promotions of 100+ packages at once. Items beyond the limit are silently truncated.Proposed Fix
MintoMaxon all aggregations so the feed reflects the most recently added file.#timestampfragment to the<guid>so RSS readers treat each rebuild as a new item. SetisPermaLink="false"accordingly.UPDATES_LIMITfrom 100 to 500.Reproducer