Skip to content

GitHub check-run update 404s right after creation (read-after-write lag) aborts PipelineRun creation — needs retry #2920

Description

@gunther432

Issue

update_check_run (PATCH /repos/{owner}/{repo}/check-runs/{id}) intermittently fails with 404 Not Found for a check-run that does exist — and the whole PipelineRun creation is aborted and reported as a failed check ("There was an error creating the PipelineRun: ... cannot use the API on the provider platform to create a in_progress status: PATCH .../check-runs/: 404").

Root cause (verified)

GitHub API read-after-write eventual consistency. Forensics from a burst on 2026-08-11 (PaC v0.45.0, GitHub App auth):

  • Controller log shows the PATCH failing 200-630 ms after the check-run was created (same reconcile burst; operation":"update_check_run","duration_ms":630,...,"status_code":404).
  • Querying the SAME four check-run IDs ~1h later returns 200 OK — the check-runs existed all along; the PATCH simply hit a replica that had not seen the fresh row yet.
  • Reproduces under bursts (e.g. a merge queue doing update-branch on several PRs), where create-to-update gaps are milliseconds. 11 occurrences in 12h across two repos.

Impact

The PipelineRun is never created; the PR is left with a permanently-red check that no /retest can revive (CEL event == "pull_request" gates), so automation that treats red as terminal deadlocks. We work around it with a janitor that detects the failure signature and does close+reopen to re-emit the PR event.

Suggested fix

Retry with short backoff (e.g. 3x with 500ms-1s) on 404 responses to check-run update/create-status calls made shortly after check-run creation. A 404 immediately after a successful create is far more likely to be replica lag than a truly missing resource.

Environment

  • Pipelines-as-Code v0.45.0 (images ghcr.io/tektoncd/pipelines-as-code/*:stable), GitHub App provider, self-hosted Tekton on k8s.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions