fedpkg request-repo rust-base64-simd didn't create koji tags #13270

Closed
opened 2026-03-16 17:12:40 +00:00 by salimma · 9 comments

Describe the issue

I requested a repo for rust-base64-simd, and over an hour later Koji still does not know about this package

$ fedpkg-request-clone.sh rust-base64-simd 2426801                   
https://pagure.io/releng/fedora-scm-requests/issue/82132
$ koji list-tags --package=rust-base64-simd
Usage: koji list-tags [options] [pattern]
(Specify the --help global option for a list of other help options)

koji: error: No such package: rust-base64-simd

When do you need this? (YYYY/MM/DD)

2026/03/20

When is this no longer needed or useful? (YYYY/MM/DD)

N/A

If we cannot complete this, what is the impact? [Dependencies/Blocker]

Blocks updating rust-coreutils, an approved F44 change


Checklist

  • I have checked existing issues for duplicates
  • I have filled out all the fields above
  • I have provided relevant links or references (if applicable)
## Describe the issue I requested a repo for rust-base64-simd, and over an hour later Koji still does not know about this package ``` $ fedpkg-request-clone.sh rust-base64-simd 2426801 https://pagure.io/releng/fedora-scm-requests/issue/82132 ``` ``` $ koji list-tags --package=rust-base64-simd Usage: koji list-tags [options] [pattern] (Specify the --help global option for a list of other help options) koji: error: No such package: rust-base64-simd ``` ## When do you need this? (YYYY/MM/DD) 2026/03/20 ## When is this no longer needed or useful? (YYYY/MM/DD) N/A ## If we cannot complete this, what is the impact? [Dependencies/Blocker] Blocks updating rust-coreutils, an approved F44 change --- ## Checklist - [x] I have checked existing issues for duplicates - [x] I have filled out all the fields above - [x] I have provided relevant links or references (if applicable)
Owner

The reason this happened is that there was a unretirement request in the fedora-scm-requests pagure and it couldn't handle it, so it crashed.

We should make the koji_sync_listener able to handle this case.

The payload of the message that broke it:

{"issue": {"id": 82114, "title": "Unretire rust-eza", "content": "```\n{\n \"action\": \"unretirement\",\n \"name\": \"rust-eza\",\n \"type\": \"rpms\",\n \"branches\": [\n  \"rawhide\"\n ],\n \"review_bugzilla\": \"2413750\",\n \"maintainer\": \"germano\"\n}\n```", "status": "Closed", "close_status": "Invalid", "date_created": "1773620493", "last_updated": "1773664420", "closed_at": "1773664420", "user": {"name": "germano", "fullname": "Germano Massullo", "url_path": "user/germano", "full_url": "https://pagure.io/user/germano"}, "private": false, "tags": [], "depends": [], "blocks": [], "assignee": null, "priority": null, "milestone": null, "custom_fields": [], "closed_by": {"name": "petersen", "fullname": "Jens Petersen", "url_path": "user/petersen", "full_url": "https://pagure.io/user/petersen"}, "related_prs": [], "full_url": "https://pagure.io/releng/fedora-scm-requests/issue/82114", "comments": []}, "project": {"id": 2765, "name": "fedora-scm-requests", "fullname": "releng/fedora-scm-requests", "url_path": "releng/fedora-scm-requests", "full_url": "https://pagure.io/releng/fedora-scm-requests", "description": "A ticket queue for Fedora SCM admin requests  |  https://fedoraproject.org/wiki/Changes/ArbitraryBranching", "namespace": "releng", "parent": null, "date_created": "1502123512", "date_modified": "1748522179", "user": {"name": "mohanboddu", "fullname": "Mohan Boddu", "url_path": "user/mohanboddu", "full_url": "https://pagure.io/user/mohanboddu"}, "access_users": {"owner": ["mohanboddu"], "admin": ["carlwgeorge", "churchyard", "humaton", "ignatenkobrain", "kevin", "limb", "petersen", "releng-bot", "tibbs"], "commit": ["amedvede", "jnsamyak", "patrikp"], "collaborator": [], "ticket": []}, "access_groups": {"admin": ["releng"], "commit": [], "collaborator": [], "ticket": []}, "tags": [], "priorities": {}, "custom_keys": [], "close_status": ["Invalid", "Processed", "Denied"], "milestones": {}}, "fields": ["close_status", "status"], "agent": "petersen"}

The traceback:

Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: Traceback 
(most recent call last):
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:   File "/usr/lib/python3.14/site-packages/fedora_messaging/twisted/consumer.py", line 209, in _read_on
e
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:     yield 
d
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:   File "/usr/lib/python3.14/site-packages/twisted/python/threadpool.py", line 269, in inContext
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:     result = inContext.theWork()  # type: ignore[attr-defined]
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:   File "/usr/lib/python3.14/site-packages/twisted/python/threadpool.py", line 285, in <lambda>
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:     inContext.theWork = lambda: context.call(  # type: ignore[attr-defined]
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:                                 ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:         ctx, func, *args, **kw
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:         ^^^^^^^^^^^^^^^^^^^^^^
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:     )
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:     ^
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:   File "/usr/lib/python3.14/site-packages/twisted/python/context.py", line 117, in callWithContext
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:     return self.currentContext().callWithContext(ctx, func, *args, **kw)
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:   File "/usr/lib/python3.14/site-packages/twisted/python/context.py", line 82, in callWithContext
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:     return func(*args, **kw)
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:   File "/usr/lib/python3.14/site-packages/koji_sync_listener.py", line 63, in __call__
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:     package = body['repo']
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]:               ~~~~^^^^^^^^
Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: KeyError:  'repo'

We should fix this before unretirement processing is made live.

The reason this happened is that there was a unretirement request in the fedora-scm-requests pagure and it couldn't handle it, so it crashed. We should make the koji_sync_listener able to handle this case. The payload of the message that broke it: ``` {"issue": {"id": 82114, "title": "Unretire rust-eza", "content": "```\n{\n \"action\": \"unretirement\",\n \"name\": \"rust-eza\",\n \"type\": \"rpms\",\n \"branches\": [\n \"rawhide\"\n ],\n \"review_bugzilla\": \"2413750\",\n \"maintainer\": \"germano\"\n}\n```", "status": "Closed", "close_status": "Invalid", "date_created": "1773620493", "last_updated": "1773664420", "closed_at": "1773664420", "user": {"name": "germano", "fullname": "Germano Massullo", "url_path": "user/germano", "full_url": "https://pagure.io/user/germano"}, "private": false, "tags": [], "depends": [], "blocks": [], "assignee": null, "priority": null, "milestone": null, "custom_fields": [], "closed_by": {"name": "petersen", "fullname": "Jens Petersen", "url_path": "user/petersen", "full_url": "https://pagure.io/user/petersen"}, "related_prs": [], "full_url": "https://pagure.io/releng/fedora-scm-requests/issue/82114", "comments": []}, "project": {"id": 2765, "name": "fedora-scm-requests", "fullname": "releng/fedora-scm-requests", "url_path": "releng/fedora-scm-requests", "full_url": "https://pagure.io/releng/fedora-scm-requests", "description": "A ticket queue for Fedora SCM admin requests | https://fedoraproject.org/wiki/Changes/ArbitraryBranching", "namespace": "releng", "parent": null, "date_created": "1502123512", "date_modified": "1748522179", "user": {"name": "mohanboddu", "fullname": "Mohan Boddu", "url_path": "user/mohanboddu", "full_url": "https://pagure.io/user/mohanboddu"}, "access_users": {"owner": ["mohanboddu"], "admin": ["carlwgeorge", "churchyard", "humaton", "ignatenkobrain", "kevin", "limb", "petersen", "releng-bot", "tibbs"], "commit": ["amedvede", "jnsamyak", "patrikp"], "collaborator": [], "ticket": []}, "access_groups": {"admin": ["releng"], "commit": [], "collaborator": [], "ticket": []}, "tags": [], "priorities": {}, "custom_keys": [], "close_status": ["Invalid", "Processed", "Denied"], "milestones": {}}, "fields": ["close_status", "status"], "agent": "petersen"} ``` The traceback: ``` Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: Traceback (most recent call last): Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: File "/usr/lib/python3.14/site-packages/fedora_messaging/twisted/consumer.py", line 209, in _read_on e Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: yield d Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: File "/usr/lib/python3.14/site-packages/twisted/python/threadpool.py", line 269, in inContext Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: result = inContext.theWork() # type: ignore[attr-defined] Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: File "/usr/lib/python3.14/site-packages/twisted/python/threadpool.py", line 285, in <lambda> Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: inContext.theWork = lambda: context.call( # type: ignore[attr-defined] Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: ctx, func, *args, **kw Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: ^^^^^^^^^^^^^^^^^^^^^^ Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: ) Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: ^ Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: File "/usr/lib/python3.14/site-packages/twisted/python/context.py", line 117, in callWithContext Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: return self.currentContext().callWithContext(ctx, func, *args, **kw) Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: File "/usr/lib/python3.14/site-packages/twisted/python/context.py", line 82, in callWithContext Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: return func(*args, **kw) Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: File "/usr/lib/python3.14/site-packages/koji_sync_listener.py", line 63, in __call__ Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: package = body['repo'] Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: ~~~~^^^^^^^^ Mar 16 17:16:10 bodhi-backend01.rdu3.fedoraproject.org fedora-messaging[1277852]: KeyError: 'repo' ``` We should fix this before unretirement processing is made live.
Owner

FYI, I dropped that message from the queue and it's processing again for now.

FYI, I dropped that message from the queue and it's processing again for now.

I looked at the code and I think there are 2 ways to fix this:

  1. teach koji_sync_listener to look for the package name in "name" instead of "repo" when it's an unretirement request
  2. change fedpkg to use a repo key instead of a name key when creating the ticket, like all the other requests.

I would prefer option 2, but I'm not certain whether that would break other listeners of these unretirement requests.

I looked at the code and I think there are 2 ways to fix this: 1. teach `koji_sync_listener` to look for the package name in `"name"` instead of `"repo"` when it's an unretirement request 2. change `fedpkg` to use a `repo` key instead of a `name` key when creating the ticket, like all the other requests. I would prefer option 2, but I'm not certain whether that would break other listeners of these unretirement requests.
Owner

@james commited a small workaround in infra/ansible@b17170efc7

I guess a question is if koji_sync_listener needs to act on unretirement messages at all?

@james commited a small workaround in https://forge.fedoraproject.org/infra/ansible/commit/b17170efc755c13a60a5e06cba0d8bba594a090e I guess a question is if koji_sync_listener needs to act on unretirement messages at all?
Owner

CC: @amedvede ^^

CC: @amedvede ^^
Owner

I checked the traceback of the error, and it seems that the main purpose of the script is called on closing fedora-scm-requests is that which calls this script and it syncs ownership of the package to koji. Hmm, it probably should react on the unretirement ticket if the project was orphaned and we unorphan it. Does it seem reasonable @kevin? If so, I'll probably rename the variable that is used in the request.

I checked the traceback of the error, and it seems that the main purpose of the script is called on closing fedora-scm-requests is [that](https://forge.fedoraproject.org/infra/ansible/src/branch/main/roles/bodhi2/backend/files/koji_sync_listener.py) which calls this [script](https://forge.fedoraproject.org/infra/ansible/src/branch/main/roles/bodhi2/backend/templates/owner-sync-pagure.j2) and it syncs ownership of the package to koji. Hmm, it probably should react on the unretirement ticket if the project was orphaned and we unorphan it. Does it seem reasonable @kevin? If so, I'll probably rename the variable that is used in the request.
Owner

Otherwise, rust-base64-simd package now exists on koji, so probably this ticket can be closed, and it will be good to create a new one for renaming the variable.

Otherwise, `rust-base64-simd` package now exists on koji, so probably this ticket can be closed, and it will be good to create a new one for renaming the variable.
Owner

@amedvede wrote in #13270 (comment):

I checked the traceback of the error, and it seems that the main purpose of the script is called on closing fedora-scm-requests is that which calls this script and it syncs ownership of the package to koji. Hmm, it probably should react on the unretirement ticket if the project was orphaned and we unorphan it. Does it seem reasonable @kevin? If so, I'll probably rename the variable that is used in the request.

Yes, on unretirement it should unblock the package and then also assign it to the new owner in koji.

@amedvede wrote in https://forge.fedoraproject.org/releng/tickets/issues/13270#issuecomment-713082: > I checked the traceback of the error, and it seems that the main purpose of the script is called on closing fedora-scm-requests is [that](https://forge.fedoraproject.org/infra/ansible/src/branch/main/roles/bodhi2/backend/files/koji_sync_listener.py) which calls this [script](https://forge.fedoraproject.org/infra/ansible/src/branch/main/roles/bodhi2/backend/templates/owner-sync-pagure.j2) and it syncs ownership of the package to koji. Hmm, it probably should react on the unretirement ticket if the project was orphaned and we unorphan it. Does it seem reasonable @kevin? If so, I'll probably rename the variable that is used in the request. Yes, on unretirement it should unblock the package and then also assign it to the new owner in koji.
Owner

rust-base64-simd now exists on koji, so closing this ticket. The key problem is that the payload will be discussed in the following ticket #13364

`rust-base64-simd` now exists on koji, so closing this ticket. The `key` problem is that the payload will be discussed in the following ticket https://forge.fedoraproject.org/releng/tickets/issues/13364
Sign in to join this conversation.
No milestone
No project
No assignees
5 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
releng/tickets#13270
No description provided.