RSS feed GUIDs are unstable when multi-architecture wheels arrive at different times

Open
#1,381 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
68/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
python
Domain
backend

Research direction

Start at iter_releases(), where releases are grouped and annotated with file_added_at, and trace how the RSS GUID uses link and pubdate. Update the query and GUID construction according to the proposed build-tag approach, then verify that later platform wheels keep the same GUID while a new build tag changes it.

Written by the indexing model from the issue text.

Description

Summary

The GUID fix from #1374 (appending #timestamp to make rebuilds visible) causes feed readers to show duplicate entries when platform-specific wheels for the same (name, version, build_tag) arrive at different times.

Root cause

iter_releases() groups by (name_normalized, version) and annotates added_at=Max("file_added_at"). The GUID is link#pubdate.isoformat(). When a new architecture wheel is promoted (e.g., s390x arriving an hour after x86_64/aarch64/ppc64le), Max(file_added_at) shifts, producing a different GUID. Feed readers treat the new GUID as a new item.

Proposed fix

Replace the timestamp-based GUID fragment with a build-tag-based fragment. Use ArrayAgg("filename") in the query, extract PEP 427 build tags from wheel filenames in Python, and construct GUIDs like link#builds=1,2.

This makes GUIDs:

  • Stable when additional platform wheels arrive for the same build tag
  • Different when a genuine rebuild introduces a new build tag (the original #1374 requirement)
Dominant language
Python
Stars
49
Forks
88
Avg merge
1d 10h
Merged PRs (30d)
31

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from pulp/pulp_python

All issues in pulp/pulp_python

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.