Skip to content

Commit 3ec5e08

Browse files
fix: handle external dependency manager errors (#764)
1 parent 4ab86f0 commit 3ec5e08

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

job/external_dependency_resolver.go

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@ func (e *externalDependencyResolver) FetchInferredExternalDependenciesPerJobName
4747
}
4848
externalDependencyPerJobName := make(map[string]models.ExternalDependency)
4949
for jobName, filters := range unresolvedDependenciesPerJobName {
50-
optimusDependencies := e.fetchInferredOptimusDependencies(ctx, filters)
50+
optimusDependencies, err := e.fetchInferredOptimusDependencies(ctx, filters)
51+
if err != nil {
52+
return nil, err
53+
}
5154
// external dependency types other than optimus will be called in this line, and used in the line below
5255
externalDependencyPerJobName[jobName] = models.ExternalDependency{
5356
OptimusDependencies: optimusDependencies,
@@ -64,7 +67,10 @@ func (e *externalDependencyResolver) FetchStaticExternalDependenciesPerJobName(c
6467
var unknownDependencies []models.UnknownDependency
6568
externalDependencyPerJobName := make(map[string]models.ExternalDependency)
6669
for jobName, toBeResolvedDependency := range unresolvedDependenciesPerJobName {
67-
optimusDependencies, unresolvedFromExternal := e.fetchStaticOptimusDependencies(ctx, toBeResolvedDependency)
70+
optimusDependencies, unresolvedFromExternal, err := e.fetchStaticOptimusDependencies(ctx, toBeResolvedDependency)
71+
if err != nil {
72+
return nil, nil, err
73+
}
6874
unknownDependenciesFromUnresolved := e.convertUnresolvedToUnknownDependencies(jobName, unresolvedFromExternal)
6975
unknownDependencies = append(unknownDependencies, unknownDependenciesFromUnresolved...)
7076
// external dependency types other than optimus will be called in this line, and used in the line below
@@ -88,13 +94,16 @@ func (*externalDependencyResolver) convertUnresolvedToUnknownDependencies(jobNam
8894
return unknownDependencies
8995
}
9096

91-
func (e *externalDependencyResolver) fetchInferredOptimusDependencies(ctx context.Context, unresolvedDependencies []models.UnresolvedJobDependency) []models.OptimusDependency {
97+
func (e *externalDependencyResolver) fetchInferredOptimusDependencies(ctx context.Context, unresolvedDependencies []models.UnresolvedJobDependency) ([]models.OptimusDependency, error) {
9298
var optimusDependencies []models.OptimusDependency
9399
for _, unresolvedDependency := range unresolvedDependencies {
94-
dependencies := e.fetchOptimusDependencies(ctx, unresolvedDependency)
100+
dependencies, err := e.fetchOptimusDependencies(ctx, unresolvedDependency)
101+
if err != nil {
102+
return nil, err
103+
}
95104
optimusDependencies = append(optimusDependencies, dependencies...)
96105
}
97-
return optimusDependencies
106+
return optimusDependencies, nil
98107
}
99108

100109
func (e *externalDependencyResolver) GetExternalJobRuns(ctx context.Context, host, jobName, projectName string, startDate, endDate time.Time) ([]models.JobRun, error) {
@@ -106,28 +115,31 @@ func (e *externalDependencyResolver) GetExternalJobRuns(ctx context.Context, hos
106115
return []models.JobRun{}, fmt.Errorf("could not find optimus external resoruce manager with host:%s", host)
107116
}
108117

109-
func (e *externalDependencyResolver) fetchStaticOptimusDependencies(ctx context.Context, unresolvedDependencies []models.UnresolvedJobDependency) ([]models.OptimusDependency, []models.UnresolvedJobDependency) {
118+
func (e *externalDependencyResolver) fetchStaticOptimusDependencies(ctx context.Context, unresolvedDependencies []models.UnresolvedJobDependency) ([]models.OptimusDependency, []models.UnresolvedJobDependency, error) {
110119
var optimusDependencies []models.OptimusDependency
111120
var unresolvedFromExternal []models.UnresolvedJobDependency
112121
for _, toBeResolvedDependency := range unresolvedDependencies {
113-
dependencies := e.fetchOptimusDependencies(ctx, toBeResolvedDependency)
122+
dependencies, err := e.fetchOptimusDependencies(ctx, toBeResolvedDependency)
123+
if err != nil {
124+
return nil, nil, err
125+
}
114126
if len(dependencies) == 0 {
115127
unresolvedFromExternal = append(unresolvedFromExternal, toBeResolvedDependency)
116128
continue
117129
}
118130
optimusDependencies = append(optimusDependencies, dependencies...)
119131
}
120-
return optimusDependencies, unresolvedFromExternal
132+
return optimusDependencies, unresolvedFromExternal, nil
121133
}
122134

123-
func (e *externalDependencyResolver) fetchOptimusDependencies(ctx context.Context, unresolvedDependency models.UnresolvedJobDependency) []models.OptimusDependency {
135+
func (e *externalDependencyResolver) fetchOptimusDependencies(ctx context.Context, unresolvedDependency models.UnresolvedJobDependency) ([]models.OptimusDependency, error) {
124136
var dependencies []models.OptimusDependency
125137
for _, manager := range e.optimusResourceManagers {
126138
deps, err := manager.GetOptimusDependencies(ctx, unresolvedDependency)
127139
if err != nil {
128-
continue
140+
return nil, err
129141
}
130142
dependencies = append(dependencies, deps...)
131143
}
132-
return dependencies
144+
return dependencies, nil
133145
}

0 commit comments

Comments
 (0)