Repository navigation
ci: cap ccache at 300M and evict entries unused for a day so depends caches stop getting evicted - #8009
Merged
PastaPastaPasta merged 1 commit intoNov 1, 2026
Conversation
Each develop push saved ~4.5 GB of ccache (10 targets at up to the 600M cap), most of it objects from older commits that no build hits anymore. Overlapping develop runs pushed the repository past GitHub's 10 GB cache limit, and LRU eviction then dropped fresh depends entries that PR runs had already been told were present. One build's working set is 0.1-0.25 GB per target (cold v24.0.x builds and freshly reset develop entries), so 300M still holds it. Hits refresh mtime, so evicting anything older than a day keeps exactly what recent builds used. The thrash that motivated the 600M bump (dashpay#7059) predates the remote ccache, which now serves objects evicted mid-build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue being fixed or feature implemented
PR builds are failing with "Depends cache restore missed and no built depends artifact was provided" (e.g. run 41252515931 on #8008:
aarch64-linux-build,linux64_tsan-build,linux64_multiprocess-build).Check cachesaw the depends entry at 23:27, the builds tried to restore it ~90 minutes later, and by then GitHub's LRU eviction had removed it.The eviction pressure is ccache. Every develop push saves one ccache entry per target, each sitting at the 600M cap: about 4.5 GB per push. Ten develop pushes landed in three hours, the runs overlapped, and
prune-ccacheonly runs once all tensrc-*jobs of a run are done. Between 22:32 and 00:12 nothing was pruned while ~14 GB of new entries were written against the 10 GB repository limit.Most of each 600M entry is objects from older commits. One build's working set is 0.1–0.25 GB per target: that's where cold v24.0.x builds end up, and where develop entries end up after a reset (multiprocess 182 MB, nowallet 220 MB, win64 241 MB).
What was done?
CCACHE_MAXSIZEfrom 600M to 300M.ccache --evict-older-than 1dbefore the final cleanup. ccache refreshes a file's mtime on every hit, so this drops exactly the objects no build has used in a day, and the saved entry stays close to one build's working set.#7059 raised the cap from 400M to 600M because linux64/linux64_sqlite were thrashing at 400M. That was before the remote ccache: today an object evicted mid-build is fetched from the remote instead of recompiled. On recent develop pushes the remote served all but 1–2 of the local misses.
How Has This Been Tested?
--evict-older-than 1d. The re-hit entry survived and the stale one was evicted (miss on rebuild).pull_request_targetruns the base branch's workflow, and ccache is only saved on develop pushes. The effect shows up in theccachestep summary andgh cache listsizes after merge.Breaking Changes
None.
Checklist:
🤖 Generated with Claude Code