Skip to content

[Bug] Legacy Codecov uploads are silently dropped by tokenless rate limits #3168

Description

@contrueCT

Bug Type

CI / Test Coverage

Environment

Current master and pull requests from forks.

Expected behavior

Every workflow that produces coverage should upload its report reliably to the same Codecov commit. A missing upload should not make the commit appear to have lost coverage from modules whose tests completed successfully.

Actual behavior

The repository still uses codecov/codecov-action@v3 in Commons, PD/Store/HStore, and Server CI. Pull requests from forks cannot access CODECOV_TOKEN, so these jobs use the legacy anonymous uploader.

The legacy uploader shares a global tokenless rate limit. When that limit is exceeded, Codecov returns HTTP 429, but the uploader exits with status 0 by default. GitHub Actions therefore shows the producing job as green even though the report never reached Codecov.

PR #3167 demonstrated the failure at commit 74e8701: only one of the expected upload sessions was accepted, causing an apparent 4.92 percentage-point project coverage drop. PR #3161 reproduced the same behavior at commit a63e48e9: PD and HStore uploads returned 429 while other uploads happened to succeed, leaving codecov/project with an incomplete report set.

Evidence

Proposed solution

  1. Upgrade every repository coverage upload from codecov/codecov-action@v3 to @v5 or newer.
  2. Replace the deprecated file input with files.
  3. Pass the existing CODECOV_TOKEN to trusted push/non-fork runs; fork pull requests will use the modern action's fork-aware tokenless flow because repository secrets are intentionally unavailable there.
  4. Add a lightweight configuration contract test covering all Codecov upload steps so workflows cannot drift back to the legacy uploader or omit the trusted-run token input.
  5. Keep the current non-blocking uploader policy in this change. Whether an external Codecov outage should fail otherwise healthy test jobs is a separate gate-policy decision.

Scope

This issue covers repository-wide Codecov uploader modernization and authentication routing only. It does not change JaCoCo collection, coverage thresholds, flags/carry-forward behavior, or production code. The PD/Store JaCoCo aggregation work remains tracked independently by #3160 and #3161.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingci-cdBuild or deploy

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions