Repository navigation
ci(e2e): give DerivedData adoption a budget, and log where its time goes - #14095
teamleaderleo wants to merge 3 commits into
Conversation
Every macOS adoption since #14016 ran into the step timeout: 612 s under the old 10-minute limit, 912 s under the 15-minute one, and never a hit. Each one added those minutes of silence to a focused run before it compiled cold anyway. The step printed nothing until it finished, so the logs cannot say which phase is slow. Measured off the fleet, the same 1.9 GB archive takes 34 s to download over the parallel transport, 1 s to unzip and 35 s to list and extract its 65,028 members. On the macOS fleet the transport reads the test product in 35 s and the input record hashes the workspace in 5-8 s, which leaves extraction onto the VM's disk as the likeliest cost. That is a hypothesis; the phase timings this adds will settle it on the first run. The restore now: - logs each phase and its duration to stderr as it goes - gives up after CMUX_WARM_BUDGET_SECONDS (default 420 s) through SIGALRM, inside the process, so its own cleanup deletes the partial DerivedData and reports the phase it was in (a step timeout kills it before that) - cancels the alarm in a finally, so a restore that finished cannot be interrupted afterwards The step timeout drops to 10 minutes as a backstop, and #14084's discard step still covers the case where the process dies anyway. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedNext included review available in 18 seconds. View limit detailsLimit details: You’ve used all 10 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (3)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
All contributors have signed the CLA ✍️ ✅ |
…h off Review follow-ups: a timeout just after a phase no longer blames that phase; a zero or malformed CMUX_WARM_BUDGET_SECONDS falls back to a real budget instead of disabling it or crashing outside the try; the budget tests restore the SIGALRM handler and phase they change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Independent subagent review at 68a3821: no blocking defects. Follow-ups are in
Accepted as-is:
|
quality-determinism rejected the two time.sleep calls. The over-budget case now checks that the 1 s alarm is armed and delivers SIGALRM itself; the within-budget case checks that no alarm is left armed, which is what a sleep past the budget was standing in for. Both fail if the source stops arming or cancelling the alarm. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pull request was closed
Problem
Since #14016, every macOS e2e run's "Adopt main's DerivedData" step has run until the step timeout: 612 s under the old 10-minute limit, 912 s under the 15-minute one. None has ever hit. Every focused run pays those minutes before it compiles cold anyway. The step prints nothing until it finishes, so the logs can't say which phase is slow.
Sample of timed-out runs: 35937847074, 35938349258, 35938871900, 35938878301, 35939305209, 35939623231, 35940458918.
What is and is not slow
The likeliest cost is extraction onto the VM's disk. That's a hypothesis: this PR's phase timings will confirm or refute it on the first run.
Change
The restore step now:
CMUX_WARM_BUDGET_SECONDS(default 420 s), using SIGALRM inside the process. Its own cleanup then deletes the partial DerivedData and reports which phase it was in. A step timeout kills the process before any of that can run.finally.The step timeout drops to 10 minutes as a backstop. #14084's discard step still covers a process that dies anyway.
Testing
tests/test_e2e_warm_derived_data.py:hit=false, leaves DerivedData empty, and names the phase it was in.linux-guardexits 0 with 434 passing.actionlintis clean.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Stops macOS e2e DerivedData adoption from burning the full step timeout (612 s, then 912 s since #14016) with no hit. The restore step now gives up on its own after a time budget and logs where its time goes as it runs.
CMUX_WARM_BUDGET_SECONDS(default 420 s) via SIGALRM inside the process, so cleanup deletes the partial DerivedData and names the phase it was in; a zero or malformed budget falls back to the default instead of disabling or crashing.finally, so a finished restore can't be interrupted afterwards.Written for commit fc63447. Summary will update on new commits.