diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2023-01-13 16:48:03 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <wp32pw@gmail.com> | 2023-01-19 11:26:54 +0100 |
| commit | 2cf22faa5bfe68744016881043351d75c8269139 (patch) | |
| tree | 828b367a245c709507646978b6870267f6999db4 /syz-ci/jobs.go | |
| parent | c1c804b7d96215f84085920474ef14af2981bdf1 (diff) | |
syz-ci: don't start an idle parallel job processor
Check if there are any managers that could benefit from an extra job
processor before starting it.
Diffstat (limited to 'syz-ci/jobs.go')
| -rw-r--r-- | syz-ci/jobs.go | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/syz-ci/jobs.go b/syz-ci/jobs.go index 04c241ab2..d23974d92 100644 --- a/syz-ci/jobs.go +++ b/syz-ci/jobs.go @@ -28,10 +28,11 @@ import ( ) type JobManager struct { - cfg *Config - dash *dashapi.Dashboard - managers []*Manager - shutdownPending <-chan struct{} + cfg *Config + dash *dashapi.Dashboard + managers []*Manager + parallelJobFilter *ManagerJobs + shutdownPending <-chan struct{} } type JobProcessor struct { @@ -55,6 +56,8 @@ func newJobManager(cfg *Config, managers []*Manager, shutdownPending chan struct dash: dash, managers: managers, shutdownPending: shutdownPending, + // For now let's only parallelize patch testing requests. + parallelJobFilter: &ManagerJobs{TestPatches: true}, }, nil } @@ -100,8 +103,7 @@ func (jm *JobManager) loop(stop chan struct{}) { } else { jp.instanceSuffix = "-job-parallel" jp.baseDir = osutil.Abs("jobs-2") - // For now let's only parallelize patch testing requests. - jp.jobFilter = &ManagerJobs{TestPatches: true} + jp.jobFilter = jm.parallelJobFilter } jp.name = fmt.Sprintf("%v%v", jm.cfg.Name, jp.instanceSuffix) wg.Add(1) @@ -109,13 +111,25 @@ func (jm *JobManager) loop(stop chan struct{}) { defer wg.Done() jp.loop(stop) }() - if main != jm.cfg.ParallelJobs { + if !main || !jm.needParallelProcessor() { break } } wg.Wait() } +func (jm *JobManager) needParallelProcessor() bool { + if !jm.cfg.ParallelJobs { + return false + } + for _, mgr := range jm.managers { + if mgr.mgrcfg.Jobs.Filter(jm.parallelJobFilter).AnyEnabled() { + return true + } + } + return false +} + func (jm *JobManager) resetJobs() error { managerNames := []string{} for _, mgr := range jm.managers { |
