Skip to content

Commit 750dfd2

Browse files
authored
Search for min revision exponentially backwards (#3934)
This PR radically reworks the way regression task starts off, while leaving bisection untouched. Before this change, on first run, regression task would: 1. iterate linearly through a handful of the latest revisions to see if the regression was very recent 1. if so, return that regression range 2. iterate linearly through a handful of the earliest revisions to see if the testcase reproduced there 1. if so, then return regression range `0:earliest_revision` 2. if none of these earliest builds were good, fail with `REGRESSION_BAD_BUILD_ERROR` _and get stuck_ 3. start bisecting Step 2.ii. was responsible for lots of issues for Chrome's clusterfuzz instance as the earliest builds would sometimes stop working due to docker image changes (usually related to system libs). This change reworks this to broadly behave as follows: 1. Search exponentially backwards from the max revision for a suitable min revision 1. If no such revision can be found, find the first good revision and return regression range `0:earliest good revision` 2. If we time out, set up state on the testcase to remember where we left off and reschedule regression task 2. Start bisecting Note that this means that there are now 3 possible states when we start regression task: 1. Starting from scratch: `last_regression_max` and `last_regression_min` are `None` 2. (new) Resuming the search for a min revision: `last_regression_max` is an integer, `last_regression_min` is None 3. Resuming bisection: `last_regression_max` and `last_regression_min` are integers Bug: https://crbug.com/396344382
1 parent a917759 commit 750dfd2

File tree

2 files changed

+1033
-194
lines changed

2 files changed

+1033
-194
lines changed

0 commit comments

Comments
 (0)