Repository navigation
fix(ci): keep the cron queue moving when one test fails to start - #1244
Merged
cfsmp3 merged 2 commits intoOct 25, 2026
Merged
Conversation
x15sr71
requested review from
canihavesomecoffee and
thealphadollar
as code owners
October 24, 2026 13:55
|
6 of 9 tasks
|
Tested this locally with Python 3.12:
One minor thought for future consideration: Overall, very clean and well-scoped fix to unblock the cron queue! LGTM 👍 |
6 of 9 tasks
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.



In raising this pull request, I confirm the following (please check boxes):
My familiarity with the project is as follows (check one):
Problem
No test has started on the platform since 2026-10-18 02:02 UTC. As of 2026-10-24, 92 queued tests (ids 9669–9809) have never started. They include:
d7eb132e: 9750 (Linux) and 9751 (Windows)Every 10-minute cron run stops at the same test, 9700 (Linux, master
aed3c8ae). The platform logs show "Starting test 9700" more than 900 times since Oct 18, and no other test after the early hours of that day. The latestcron.log:The file it fails on is the first one
start_test()writes for that test,vm_data/linux-9700/ci-tests/Hardsubx.xmlon the bucket mount. Evenstaton it returnsInput/output error, while the other 14 files in that folder read fine. The night it started, the platform logs show repeatedQUOTA_EXCEEDEDandZONE_RESOURCE_POOL_EXHAUSTEDretries, which rewrote these files on every cron run.Root Cause
In
gcp_instance(), the PR-status check already catches errors and moves on (log.error(...), thencontinue), but thestart_test()call right below it isn't covered. The exception ends the whole cron run, before any later Linux test is tried and before the Windows half runs at all. Nothing is recorded for 9700, so it's pending again, and first in line, on the next run.Fix
Wrap the
start_test()call the same way: log the exception with its traceback (log.exception) and continue with the next test. The test that failed stays pending and is retried on the next run, which is what already happens for transient GCP and artifact errors, so a temporary bucket problem can't fail someone's PR.start_test()only writes to the database at its very end, throughsafe_db_commit(), so a test that fails part-way leaves nothing half-written for the next one.Test
test_start_platforms_continues_after_a_test_fails_to_start: three queued tests (two Linux, one Windows), where the firststart_test()call raisesOSError(5, 'Input/output error'). It checks that the second Linux test and the Windows test are still started, and that the error is logged once.controllers.pychange reverted): this run fails on every Python version. This test is the only error, raised along the samestart_platforms→gcp_instancepath as the traceback above.Notes
vm_data/linux-9700/ci-tests/Hardsubx.xmlor remounting the bucket. Nothing cancels it automatically. If it shouldn't run, an admin can stop it with the "Stop Test" button in the test list.