Repository navigation
ci: preserve cache failure evidence and compile through daemon outages - #1362
Conversation
|
Additional real-binary verification for the fallback (not just shell stubs): downloaded standalone zccache 1.15.5 into ignored in-repo scratch and verified SHA-256 Updated PR CI run 39077243497 is in progress. This does not claim the daemon-death root cause is fixed or the CI fallback has yet been exercised live. |
|
Updated PR CI Tier 2 build 117526986641 succeeded: exact new container cook restore (542 files), 781/781 cold standalone compiler calls, 349-second build step / 439-second job. The daemon remained available, so recovery was not exercised live. This verifies the normal path; availability fallback behavior remains covered by shell execution tests and the checksum-verified real-binary compiler checks above. OFF/ON test jobs and the required gate still need to complete. |
18d009c to
1903137
Compare
|
New live CI evidence from #1286 follow-up PR #1362, run 39081664635: both OFF job 117540316673 and ON job 117540316794 failed the unchanged Observed OFF log: Source inspection identifies a concrete race candidate in the already-merged #1342 implementation: Recording here under the existing fresh claim rather than starting competing source work. This is currently blocking #1362 CI; its build job succeeded. Raw job logs are retained locally under build_ci_audit/recovery-latest-{off,on}-.log. |
0aa2390 to
294ba4e
Compare
Summary
Refs #1286.
Master job 117523909439 failed with 210 launcher exits 125. Its existing recovery overwrote the original build log, leaving recovery-cooldown messages and hiding the initial cause.
Preserve the first build log beside the retry log, print its bounded error summary, and print bounded daemon status/stop diagnostics before the existing restart. Diagnostic command failures remain nonfatal; the second build still determines success. No extra retry, changed C tests or compiler-error suppression. If daemon status confirms unavailability, the existing single recovery build uses
ZCCACHE_DISABLE=1inside a subshell. Real compiler failures still fail that build; a healthy daemon retains the existing restart behavior.RED / GREEN
d3593cc15: executing the actual recovery block loses the first failure in both successful and failed retry fixtures.725b15761:uv run --no-project python -m unittest ci.test_tier2_build_errors— 6 tests pass. The recovery test checks first-log preservation, original diagnostic, status/stop output, exactly two build calls and final exit status for both retry outcomes.bash -n rust/tools/linux-validate/validate.shandgit diff --checkpass.This improves evidence collection; the daemon failure root cause remains unknown. No workflow file added and no submodule change.
Live failure and availability fallback
The initial diagnostics CI run (job 117525500312) captured a lost daemon connection followed by connection refused and recovery cooldown. It also verified restoration of the new container cook namespace (542 files); the standalone C/C++ daemon failure is separate.
Follow-up RED
058974baarequires uncached compilation when status reports no daemon. GREEN1f0f7090cplus fixture correction19031378epasses all 6 tests, including the four combinations of healthy/unavailable status and successful/failed retry. The fixture uses the productionpipefailsetting. Exactly two build calls remain, and only the unavailable-daemon retry receives the bypass. This addresses cache availability without claiming the daemon-death cause is fixed.Stack verification: all 11 focused recovery, timing-persistence and Xvfb-lifetime checks pass together. This source update incorporates the demonstrated fix for the startup failure that blocked the previous PR run; no failed job was blindly retried.
The stack now includes #1365's exported-interposer correction. The real CMake-built diagnostic test passed locally under a valid X display after reproducing the exact CI failure first; all 11 combined recovery/lifetime/timing checks pass. Cancellation was requested for the superseded run 39080141182.
Preserve the last healthy remote seed
RED
162ec1d96exercises the real recovery block and requires an unhealthy output only for daemon-unavailable bypass, plus a workflow publication guard. GREEN0aa23908eemitscache-healthy=falsethrough the build step output and skips remote compiler-cache publication in that case, retaining the prior seed. Healthy saves retain existing behavior; the compiler result still decides job success. The fixture isolates GITHUB_OUTPUT in its temporary directory and covers both retry exit results and daemon-health states. All 12 combined focused checks pass; shell syntax and diff checks pass.The PR was dequeued only after this guard was implemented/tested so its queued branch could be updated. Automatic queue entry is re-enabled for fresh CI. #1365 remains an independent prerequisite.