Packit 503 responses from Pagure API #13123
Labels
No labels
announcement
anubis
authentication
aws
backlog
blocked
bodhi
ci
cloud
communishift
copr
database
day-to-day
dc-move
deprecated
dev
discourse
dns
downloads
easyfix
epel
firmitas
forgejo_migration
Gain
High
Gain
Low
Gain
Medium
gitlab
greenwave
hardware
help wanted
high-trouble
koji
koschei
lists
low-trouble
medium-trouble
mirrorlists
monitoring
Needs investigation
odcs
OpenShift
ops
outage
packager_workflow_blocker
pagure
permissions
Priority
Needs Review
Priority
Next Meeting
Priority
🔥 URGENT 🔥
Priority
Waiting on Assignee
Priority
Waiting on External
Priority
Waiting on Reporter
rabbitmq
release-monitoring
releng
request-for-resources
s390x
security
SMTP
sprint-0
sprint-1
src.fp.o
staging
unfreeze
waiverdb
websites-general
wiki
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
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
infra/tickets#13123
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?
Packit uses the Pagure API on src.fedoraproject.org for CI/CD automation (setting commit statuses, fetching PR info, posting comments, etc.). With a larger number of dist-git repos being onboarded, we started receiving more HTTP 503 responses that include a Retry-After header. We handle these by respecting the header and retrying, so it's mostly not breaking the UX. We are not entirely sure if this is related to rate limiting for our user or general service load, but since we plan to switch to default for CI soon (currently there are around 2000 packages opted in, we plan to switch to all on Feb 16), we would like to understand this better before scaling up. If this is rate limiting, we're wondering if there's a possibility to configure higher limits for the packit user, or if there are any other recommendations that could help. Thanks for any guidance on this!
It's not deliberate rate limiting that I know of.
Is there a way for us to look for these requests in logs? Whats the user-agent that it's using and/or ip address/network it's coming from?
Thanks for confirming.
User agent is
packit.dev/packit-prod (prod+packit@packit.dev). I can see one of the latest exception onFeb 12, 2026 6:02:37 PM UTC.I'm not finding much in logs. ;(
Here's the ones I see for the 12th:
Some of these are POST's and to fix a forge issue I just allowed them globally. So, perhaps things are better on those?
Not sure on the GET ones, will try and find out more.
If you have more/details on more that would help.
Thanks you looking into it. More of the events from our Sentry:
Do you need some other data?
Ah ha. That does help.
So, I think this is our varnish layer... (at least all the Retries).
not yet sure why, but looking...
So, I am not sure, but think this might be a varnish bug with http/2...
is there any way you could try just using http1.1 to see if it does or doesn't show the problem?
I am going to look into that and discuss this change with the team, and will get back to you. Thanks!
Hi! Checked this and we are using python's
requestlibrary for requests to Pagure, so it's already http/1.1.ok. Humf. I only was seeing http/2 issues... but clearly I missed something.
So, when you retry after 5 seconds it usually works? Or still persists?
Also, do you ever stop retrying? or if it keeps sending you the 503 you keep retrying every 5s?
As far as I could tell this is in the varnish talking to haproxy and getting a 503, but... haproxy isnt logging the backend as down, so the 503 has to be coming from the backend itself and recovers fast enough to avoid the health check on haproxy. If thats true, I would expect most of your retries to work on the retry?
We could look at removing haproxy from the picture here, since there's only one backend and we could talk to it directly via varnish. That would rule out this being a haproxy issue somehow. Of course we are in beta freeze so thats a pretty invasive change and would need a freeze break.
I checked few of the logs from recent days and the code to get the details:
So what you are writing about varnish→haproxy→backend would align what we're seeing - the errors are transient and recover very quickly.
Currently, this seems to not be impacting our users since the retries handle it transparently. We would continue to monitor this more closely going forward and f we start seeing increased frequency or cases where multiple retries fail, we can revisit and potentially try the fix you mentioned (removing haproxy from the picture). But given the current low impact and the beta freeze, there's no urgency from our side to push for changes right now. Thanks for the investigation and guidance!
Yeah, so after beta freeze I can try and remove haproxy from the path and see if that helps any...
if not we can look more at the varnish -> backend part, as this must be happening in there.
PR for dropping haproxy from the src.fp.o path: infra/ansible#3211
I've now deployed that.
Can you see if there's any more/less/unchanged number of these you see?
Hi, I don't see any occurrences of the previous error since March 12th, see screenshot. This seems to fix the issue, thanks a lot for all the help!
Ah, nice! I still don't understand how haproxy was breaking things, but I will take it!