From 2cf22faa5bfe68744016881043351d75c8269139 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Fri, 13 Jan 2023 16:48:03 +0100 Subject: 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. --- syz-ci/jobs.go | 28 +++++++++++++++++++++------- 1 file 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 { -- cgit mrf-deployment