Files
devx/docs/specs/DEVX-164-docker-push-retry-historical.md
T
Emil Simeonov dc37137a31
CI / validate (pull_request) Successful in 1m1s
CI / auto-merge (pull_request) Successful in 1m14s
fix(ci): retry Vikunja lookups and surface self-approval merge failures
Implements: DEVX-164 REQ-1..3

- get_vikunja_task_title retries list_project_tasks up to 4 attempts
  with backoff on APIError/RequestException — a Vikunja restart window
  (404/502) no longer strands an otherwise-valid PR
- merge HTTP 405 now fetches PR reviews and, when no APPROVED review
  exists, explains the same-user self-approval rejection and the
  remediation (approve via a non-author account)
- regression tests for retry-then-success, retry exhaustion, missing
  task, and all three 405 review states
2026-09-19 03:59:23 +02:00

1.3 KiB

DEVX-164: Increase HTTP 500 retry count and backoff for docker push

Problem

The HTTP 500 retry logic (DEVX-162, DEVX-163) works correctly — 3 retry attempts are made. But all 3 attempts fail because the Gitea registry's "offset mismatch" race condition needs more than ~15s to recover. The current backoff is 5s-20s with 3 attempts (total ~15s of waiting).

Approach

Increase retry count from 3 to 5 and backoff from 5-20s to 10-60s, giving the registry up to ~2 minutes to recover. Add visible logging between retry attempts so the CI logs show the retry happening.

REQ-1: Increase retry count from 3 to 5 REQ-2: Increase backoff from 5-20s to 10-60s exponential REQ-3: Add visible logging between retry attempts (click.echo) REQ-4: All tests pass with 100% coverage

Test Plan

  • Unit tests verify retry count and backoff parameters
  • Unit tests verify logging output on retry
  • Manual: trigger build-images workflow and verify retries visible in logs

Deploy Plan

  • Merge to master

Rollback Plan

  • Revert the merge commit

Acceptance Criteria

  • REQ-1: Increase retry count from 3 to 5
  • REQ-2: Increase backoff from 5-20s to 10-60s exponential
  • REQ-3: Add visible logging between retry attempts (click.echo)
  • REQ-4: All tests pass with 100% coverage