Skip to content

Content set memoization is incorrect in some circumstances #7272

@dralley

Description

@dralley

Version

pulpcore 3.83+

Describe the bug

In [8]: for rc in RepositoryContent.objects.all().order_by("version_added"):
   ...:     print("package: {:<40} added: {} removed: {}".format(
   ...:         Package.objects.get(pk=rc.content_id).nevra,
   ...:         rc.version_added.number,
   ...:         rc.version_removed.number
   ...:     ))
   ...: 
package: dummy-pkg-0:1.1-1.fc44.src               added: 1 removed: 2
package: dummy-pkg-0:1.1-1.fc44.x86_64            added: 1 removed: 2
package: dummy-pkg-0:1.2-1.fc44.src               added: 1 removed: 2
package: dummy-pkg-0:1.2-1.fc44.x86_64            added: 1 removed: 2
package: dummy-pkg-0:1.3-1.fc44.x86_64            added: 1 removed: 2
package: dummy-pkg-0:1.3-1.fc44.src               added: 1 removed: 2
package: dummy-pkg-0:1.4-1.fc44.src               added: 1 removed: 2
package: dummy-pkg-0:1.4-1.fc44.x86_64            added: 1 removed: 2
package: dummy-pkg-0:1.5-1.fc44.src               added: 1 removed: 2
package: dummy-pkg-0:1.5-1.fc44.x86_64            added: 1 removed: 2
package: dummy-pkg-0:1.6-1.fc44.src               added: 1 removed: 2
package: dummy-pkg-0:1.6-1.fc44.x86_64            added: 1 removed: 2
package: dummy-pkg-0:1.7-1.fc44.x86_64            added: 1 removed: 2
package: dummy-pkg-0:1.7-1.fc44.src               added: 1 removed: 2
package: dummy-pkg-0:1.8-1.fc44.src               added: 1 removed: 2
package: dummy-pkg-0:1.8-1.fc44.x86_64            added: 1 removed: 2
package: dummy-pkg-0:1.9-1.fc44.src               added: 1 removed: 2
package: dummy-pkg-0:1.9-1.fc44.x86_64            added: 1 removed: 2
package: dummy-pkg-0:1.10-1.fc44.x86_64           added: 1 removed: 2
package: dummy-pkg-0:1.10-1.fc44.src              added: 1 removed: 2
package: dummy-pkg-0:1.11-1.fc44.x86_64           added: 1 removed: 2
package: dummy-pkg-0:1.11-1.fc44.src              added: 1 removed: 2
package: dummy-pkg-0:1.12-1.fc44.src              added: 1 removed: 2
package: dummy-pkg-0:1.12-1.fc44.x86_64           added: 1 removed: 2
package: dummy-pkg-0:20260116_1303-1.fc44.x86_64  added: 1 removed: 3
package: dummy-pkg-0:20260116_1303-1.fc44.src     added: 1 removed: 3

In [9]: for rv in RepositoryVersion.objects.all().order_by("number"):
   ...:     print(f"version: {rv.number} count: {len(rv.content_ids)}")
   ...: 
version: 0 count: 0
version: 1 count: 26
version: 2 count: 26
version: 3 count: 0

In [11]: for rv in RepositoryVersion.objects.all().order_by("number"):
    ...:     print(f"version: {rv.number} count: {len(rv._content_relationships())}")
    ...: 
version: 0 count: 0
version: 1 count: 26
version: 2 count: 2
version: 3 count: 0

To Reproduce

Seemingly use of the RPM plugin's prune endpoint triggers it

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions