diff options
Diffstat (limited to 'syz-ci/manager.go')
| -rw-r--r-- | syz-ci/manager.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/syz-ci/manager.go b/syz-ci/manager.go index dfa6940b5..c19c4cb52 100644 --- a/syz-ci/manager.go +++ b/syz-ci/manager.go @@ -88,6 +88,7 @@ type Manager struct { stop chan struct{} debug bool lastBuild *dashapi.Build + buildFailed bool } type ManagerDashapi interface { @@ -241,6 +242,7 @@ loop: func (mgr *Manager) pollAndBuild(lastCommit string, latestInfo *BuildInfo) ( string, *BuildInfo, time.Duration) { + var success bool rebuildAfter := buildRetryPeriod commit, err := mgr.repo.Poll(mgr.mgrcfg.Repo, mgr.mgrcfg.Branch) if err != nil { @@ -263,6 +265,8 @@ func (mgr *Manager) pollAndBuild(lastCommit string, latestInfo *BuildInfo) ( latestInfo = mgr.checkLatest() if latestInfo == nil { mgr.Errorf("failed to read build info after build") + } else { + success = true } } buildSem.Signal() @@ -270,6 +274,7 @@ func (mgr *Manager) pollAndBuild(lastCommit string, latestInfo *BuildInfo) ( } } } + mgr.buildFailed = !success return lastCommit, latestInfo, rebuildAfter } @@ -410,6 +415,12 @@ func (mgr *Manager) restartManager() { mgr.Errorf("failed to upload build: %v", err) return } + daysSinceCommit := time.Since(info.KernelCommitDate).Hours() / 24 + if mgr.buildFailed && daysSinceCommit > float64(mgr.mgrcfg.MaxKernelLagDays) { + mgr.Errorf("the kernel is now too old (%.1f days since last commit), fuzzing is stopped", + daysSinceCommit) + return + } cfgFile, err := mgr.writeConfig(buildTag) if err != nil { mgr.Errorf("failed to create manager config: %v", err) |
