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
- Upgrade every repository coverage upload from
codecov/codecov-action@v3 to @v5 or newer.
- Replace the deprecated
file input with files.
- 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.
- 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.
- 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.
Bug Type
CI / Test Coverage
Environment
Current
masterand 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@v3in Commons, PD/Store/HStore, and Server CI. Pull requests from forks cannot accessCODECOV_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 commita63e48e9: PD and HStore uploads returned 429 while other uploads happened to succeed, leavingcodecov/projectwith an incomplete report set.Evidence
Proposed solution
codecov/codecov-action@v3to@v5or newer.fileinput withfiles.CODECOV_TOKENto 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.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.