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

https://issues.redhat.com/browse/PULP-1173

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions