in cmd/checker/checker.go [211:242]
func (c *gerritChecker) processPendingChecks() (wait bool, err error) {
pending, err := c.server.PendingChecksByScheme(checkerScheme)
if err != nil {
wait = true
return
}
if len(pending) == 0 {
wait = true
log.Printf("no pending checks")
return
}
// Shuffle so we don't always report the first error if there
// is a problem.
rand.Shuffle(len(pending),
func(i, j int) {
pending[i], pending[j] = pending[j], pending[i]
})
var aggregateErr error
for _, pc := range pending {
if err := c.executeCheck(pc); err != nil && aggregateErr == nil {
// just register the first error.
aggregateErr = err
} else if err == nil {
// we can try again until we stop making progress.
wait = false
}
}
return wait, aggregateErr
}