From a6cd8a3ce38446b2e235338d6878b9dd3af817f4 Mon Sep 17 00:00:00 2001 From: Greg Soltis Date: Fri, 11 Mar 2022 16:07:52 -0800 Subject: [PATCH 1/2] Task vertices depend only on direct dependencies --- cli/internal/core/scheduler.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/cli/internal/core/scheduler.go b/cli/internal/core/scheduler.go index ad4458707749b..b5f280d36f008 100644 --- a/cli/internal/core/scheduler.go +++ b/cli/internal/core/scheduler.go @@ -157,15 +157,10 @@ func (p *Scheduler) generateTaskGraph(scope []string, taskNames []string, tasksO } if hasTopoDeps { + depPkgs := p.TopologicGraph.DownEdges(pkg) for _, from := range task.TopoDeps.UnsafeListOfStrings() { - // TODO: this should move out of the loop??? - depPkgs, err := p.TopologicGraph.Ancestors(pkg) - if err != nil { - return fmt.Errorf("error getting ancestors: %w", err) - } - // add task dep from all the package deps within repo - for _, depPkg := range depPkgs.List() { + for depPkg := range depPkgs { fromTaskId := util.GetTaskId(depPkg, from) taskDeps = append(taskDeps, []string{fromTaskId, toTaskId}) p.TaskGraph.Add(fromTaskId) From 271bab89a2fb47a3386c92724a487433e20aedb6 Mon Sep 17 00:00:00 2001 From: Greg Soltis Date: Fri, 11 Mar 2022 16:18:15 -0800 Subject: [PATCH 2/2] Drop unused field on Scheduler --- cli/internal/core/scheduler.go | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/cli/internal/core/scheduler.go b/cli/internal/core/scheduler.go index b5f280d36f008..bb1e9e8282767 100644 --- a/cli/internal/core/scheduler.go +++ b/cli/internal/core/scheduler.go @@ -28,7 +28,6 @@ type Scheduler struct { TaskGraph *dag.AcyclicGraph // Tasks are a map of tasks in the scheduler Tasks map[string]*Task - taskDeps [][]string PackageTaskDeps [][]string } @@ -39,7 +38,6 @@ func NewScheduler(topologicalGraph *dag.AcyclicGraph) *Scheduler { TopologicGraph: topologicalGraph, TaskGraph: &dag.AcyclicGraph{}, PackageTaskDeps: [][]string{}, - taskDeps: [][]string{}, } } @@ -109,8 +107,6 @@ func (p *Scheduler) generateTaskGraph(scope []string, taskNames []string, tasksO packageTasksDepsMap := getPackageTaskDepsMap(p.PackageTaskDeps) - taskDeps := [][]string{} - traversalQueue := []string{} for _, pkg := range scope { @@ -157,12 +153,11 @@ func (p *Scheduler) generateTaskGraph(scope []string, taskNames []string, tasksO } if hasTopoDeps { - depPkgs := p.TopologicGraph.DownEdges(pkg) + depPkgs := p.TopologicGraph.DownEdges(pkg) for _, from := range task.TopoDeps.UnsafeListOfStrings() { // add task dep from all the package deps within repo for depPkg := range depPkgs { fromTaskId := util.GetTaskId(depPkg, from) - taskDeps = append(taskDeps, []string{fromTaskId, toTaskId}) p.TaskGraph.Add(fromTaskId) p.TaskGraph.Add(toTaskId) p.TaskGraph.Connect(dag.BasicEdge(toTaskId, fromTaskId)) @@ -174,7 +169,6 @@ func (p *Scheduler) generateTaskGraph(scope []string, taskNames []string, tasksO if hasDeps { for _, from := range deps.UnsafeListOfStrings() { fromTaskId := util.GetTaskId(pkg, from) - taskDeps = append(taskDeps, []string{fromTaskId, toTaskId}) p.TaskGraph.Add(fromTaskId) p.TaskGraph.Add(toTaskId) p.TaskGraph.Connect(dag.BasicEdge(toTaskId, fromTaskId)) @@ -185,7 +179,6 @@ func (p *Scheduler) generateTaskGraph(scope []string, taskNames []string, tasksO if hasPackageTaskDeps { if pkgTaskDeps, ok := packageTasksDepsMap[toTaskId]; ok { for _, fromTaskId := range pkgTaskDeps { - taskDeps = append(taskDeps, []string{fromTaskId, toTaskId}) p.TaskGraph.Add(fromTaskId) p.TaskGraph.Add(toTaskId) p.TaskGraph.Connect(dag.BasicEdge(toTaskId, fromTaskId)) @@ -195,16 +188,12 @@ func (p *Scheduler) generateTaskGraph(scope []string, taskNames []string, tasksO } if !hasDeps && !hasTopoDeps && !hasPackageTaskDeps { - // TODO: this should change to ROOT_NODE_NAME - fromTaskId := util.GetTaskId(pkg, "") - taskDeps = append(taskDeps, []string{fromTaskId, toTaskId}) p.TaskGraph.Add(ROOT_NODE_NAME) p.TaskGraph.Add(toTaskId) p.TaskGraph.Connect(dag.BasicEdge(toTaskId, ROOT_NODE_NAME)) } } } - p.taskDeps = taskDeps return nil }