972e3c78e8
Update the scheduler algorithm to NNFI -- Nearest Non-Failing Item. A stateless description of the algorithm is that jobs for every item should always be run based on the repository state(s) set by the nearest non-failing item ahead of it in its change queue. This means that should an item fail (for any reason -- failure to merge, a merge conflict, or job failure) changes after it will have their builds canceled and restarted with the assumption that the failed change will not merge but the nearest non-failing change ahead will merge. This should mean that dependent queues will always be running jobs and no longer need to wait for a failing change to merge or not merge before restarting jobs. This removes the dequeue-on-conflict behavior because there is now no cost to keeping an item that can not merge in the queue. The documentation and associated test for this are removed. This also removes the concept of severed heads because a failing change at the head will not prevent other changes from proceeding with their tests. If the jobs for the change at the head run longer than following changes, it could still impact them while it completes, but the reduction in code complexity is worth this minor de-optimization. The debugging representation of QueueItem is changed to make it more useful. Change-Id: I0d2d416fb0dd88647490ec06ed69deae71d39374 |
||
---|---|---|
.. | ||
source | ||
Makefile |