need_rebuild.py reports false positives due to Koji query filtering (non-RPMs and target mismatch) #13429
Labels
No labels
after freeze
automation
backlog
blocked
change-ack
change-nak
change-noreleng
changes
Closed As
Can't Fix
Closed As
Duplicate
Closed As
Fixed
Closed As
Fixed with Explanation
Closed As
Get back later
Closed As
Grooming
Closed As
Insufficient data
Closed As
Invalid
Closed As
It's all good
Closed As
taiga
Closed As
upstream
day-to-day
dev
docs
easyfix
epel
f26
f27
f28
f29
f30
f31
f32
f33
f34
f35
f36
f37
f38
f39
f40
f41
f42
f43
f44
f45
fedora
groomed
high-gain
high-trouble
in-progress
in-review
investigation
legal
low-gain
low-trouble
mass rebuild
medium-gain
medium-trouble
meeting
mini-initiative
new_artifact
ops
pdc_retirement
rawhide
RCA
review
script
sidetarget
sprint-0
sprint-1
sprint-2
sprint-3
sprint-4
sprint-5
unfrozen
waiting on external
Backlog Status
Needs Review
Backlog Status
Ready
chore
documentation
points
01
points
02
points
03
points
05
points
08
points
13
Priority
High
Priority
Low
Priority
Medium
release-process
Sprint Status
Blocked
Sprint Status
Done
Sprint Status
In Progress
Sprint Status
Review
Sprint Status
To Do
Technical Debt
Work Item
Bug
Work Item
Epic
Work Item
Spike
Work Item
Task
Work Item
User Story
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
releng/tickets#13429
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Describe the issue
The mass rebuild tracking script (
need_rebuild.py) currently reports inaccurate "needs rebuild" lists. As noted bynirikand Fabio Valentini in recent chat discussions, there are two distinct symptoms of this issue:1. Non-RPM items are listed as failed packages
Items like
Fedora-Cloud-Base-GCEare appearing on the need-rebuild list.listPackages(target, inherited=True)to populate the initial list. This pulls in all Koji packages for the tag without filtering bybtype. Consequently, Image and Module builds are evaluated alongside standard RPMs, causing them to falsely flag as failed rebuilds.2. Successfully rebuilt packages are ignored
Packages that successfully completed their mass rebuild (e.g.,
PyQt-builder) are still flagged as needing a rebuild.listBuilds(..., state=1), the script iterates through them and callsgetTaskInfo(..., request=True)to inspect the task request tuple. It does a rigid string match on the target parameter. If a maintainer uses a side-tag (e.g.,f45-python), or if the bot uses a specific rebuild target, the script may discard the valid build.Proposed Solution:
Instead of fetching all packages and looping through
listBuildsandgetTaskInfo, we can optimize and fix both bugs by querying the tags directly:listTagged(target, type='rpm', latest=True)to fetch only RPM builds and immediately exclude Cloud/Image builds.creation_timerelative to the mass-rebuild epoch, rather than relying on strict string matching of therequesttarget parameter.I am currently working on a patch for this and will submit a PR shortly.
When do you need this? (YYYY/MM/DD)
Before the next mass rebuild cycle.
When is this no longer needed or useful? (YYYY/MM/DD)
N/A
If we cannot complete this, what is the impact? [Dependencies/Blocker]
The
need_rebuild.pytracker will continue to display false positives, causing the Release Engineering team to waste time manually verifying packages and OS images that do not actually need to be rebuilt.Checklist
This happens because we have Fedora-* based in our dist-git; for this, we have PKG_SKIP_LIST, make sure to use that instead of adding bigger logic for this altogether.
For the context, in mass-rebuilds, we use the f45-rebuild tag with releng as the user filing it, so we might need to look at what is currently missing from the current logic.
If you any questions feel free to reach out.
I found at least one issue with the script:
The "epoch" is set to
'2026-07-15 18:00:00.000000'but quite a few package builds were created before this date, for example, nirik's PyQt-builder (created at'Wed, 15 Jul 2026 17:53:59 UTC', 6 minutes before the epoch set in the need_rebuild.py script). It looks like at least some false positives (mostly packages with names that start with capital letters) should get fixed by fixing the epoch in need_rebuild.py.