feat(api): Forgejo API layer resilience — timeouts + retries + backoff + pagination #334
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#334
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?
Finding
scripts/lib/forgejo-api.shhas no connection timeout, total timeout, retries, backoff, 429 handling, or 5xx retry.Pagination-incomplete: open PR lookup (client-side filter, no paginate), rolling PR label discovery, tag listing (limit=50), stale cleanup (fixed limit).
Should-fix rationale
Fine on small repos; breaks on active OSS. v1.0.0 signals broad-adoption readiness.
Fix
api_call_with_retrywrapper (exponential backoff, honor Retry-After)api_paginatehelper for list endpointsAnchor
External correctness cold-read (anonymous ChatGPT session, uploaded to operator 2026-07-03). Full review surfaced 10 findings across 5 blocking-v1.0.0 + 2 should-fix pre-v1.0.0 + 3 post-v1.0.0 backlog. This tracker addresses one of them.
SHOULD-FIX pre-v1.0.0.
Re-elevated to v1.0.0 must-fix per operator 2026-07-05 (post-round-4 sprint state review, decision-option (b)). Round-2 body already said SHOULD-FIX pre-v1.0.0; operator elected to honor that rather than defer to v1.1.0.
Substantive scope per original body: api_call_with_retry wrapper (exponential backoff, honor Retry-After) + connection + total timeouts on curl (5s connect, 30s total, env-tunable) + api_paginate helper for list endpoints + retrofit list callers + test coverage via mock server.
Land after v0.26.0 cut (in flight) so bisectable, before v1.0.0 cut.
release-bot referenced this issue2026-07-05 17:05:00 +02:00
rt repin— part A, the command and its resilience #773