runbot
runbot copied to clipboard
Stage concurrent splits
This is going to be a pain in the ass, but it would be something like a 25% wallclock speed improvement for legit splits (or even 50%): if a staging fails, the staging is split. Assuming the failure is legit (one of the PRs in the batch is an issue), we'd expect one side of the split to succeed and the other to fail (50/50).
Therefore if we create stagings for both the first and second sides of the split, if the failing PR is in the first split we'll be able to immedaitely merge the second (successful) one as we re-split the first, instead of waiting for the first one to fail before we can even attempt the second one.
Of course if this is a nondeterministic failure and both stagings succeed we'll still need to re-stage the second split. Could also be a situation where two PRs are not logically compatible and they happen to land on different sides of the split.
Also if the first split succeeds and the second fails, we can probably re-split the failed one immediately without restaging it in full, so our wallclock gain is probably closer to 50%.