Skip to content

Commit a72d635

Browse files
fix: upload to scheduler (#710)
1 parent 56c8645 commit a72d635

File tree

8 files changed

+33
-48
lines changed

8 files changed

+33
-48
lines changed

client/cmd/scheduler/upload_all.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package scheduler
22

33
import (
4-
"fmt"
54
"time"
65

76
"github.com/MakeNowJust/heredoc"
@@ -61,14 +60,10 @@ func (u *uploadCommand) RunE(_ *cobra.Command, _ []string) error {
6160
u.logger.Info("Uploading jobs for project " + u.clientConfig.Project.Name)
6261
u.logger.Info("please wait...")
6362

64-
uploadResponse, err := u.sendUploadAllRequest(u.clientConfig.Project.Name)
63+
_, err := u.sendUploadAllRequest(u.clientConfig.Project.Name)
64+
u.logger.Info("Finished uploading to scheduler")
6565
if err != nil {
66-
return fmt.Errorf("request failed for project %s: %w", u.clientConfig.Project.Name, err)
67-
}
68-
if uploadResponse.Status {
69-
u.logger.Info("Uploaded jobs for project " + u.clientConfig.Project.Name)
70-
} else {
71-
u.logger.Error("Error Uploading jobs for project: "+u.clientConfig.Project.Name+", error: ", uploadResponse.ErrorMessage)
66+
u.logger.Error("With %v", err.Error())
7267
}
7368
return nil
7469
}

core/scheduler/handler/v1beta1/job_run.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,9 @@ func (h JobRunHandler) UploadToScheduler(ctx context.Context, req *pb.UploadToSc
133133
}
134134
err = h.service.UploadToScheduler(ctx, projectName, req.GetNamespaceName())
135135
if err != nil {
136-
return nil, errors.GRPCErr(err, "unsuccessful upload to scheduler for "+projectName.String())
136+
return nil, errors.GRPCErr(err, "\nuploaded to scheduler with error")
137137
}
138-
return &pb.UploadToSchedulerResponse{
139-
Status: true,
140-
ErrorMessage: "",
141-
}, nil
138+
return &pb.UploadToSchedulerResponse{}, nil
142139
}
143140

144141
// TODO: check in jaeger if this api takes time, then we can make this async

core/scheduler/handler/v1beta1/job_run_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ func TestJobRunHandler(t *testing.T) {
370370

371371
resp, err := jobRunHandler.UploadToScheduler(ctx, req)
372372
assert.NotNil(t, err)
373-
assert.EqualError(t, err, "rpc error: code = Internal desc = some error: unsuccessful upload to scheduler for a-data-proj")
373+
assert.EqualError(t, err, "rpc error: code = Internal desc = some error: \nuploaded to scheduler with error")
374374
assert.Nil(t, resp)
375375
})
376376
t.Run("should return success if deployment succeeds", func(t *testing.T) {
@@ -385,9 +385,8 @@ func TestJobRunHandler(t *testing.T) {
385385
defer jobRunService.AssertExpectations(t)
386386
jobRunHandler := v1beta1.NewJobRunHandler(logger, jobRunService, nil)
387387

388-
resp, err := jobRunHandler.UploadToScheduler(ctx, req)
388+
_, err := jobRunHandler.UploadToScheduler(ctx, req)
389389
assert.Nil(t, err)
390-
assert.Equal(t, true, resp.Status)
391390
})
392391
t.Run("should return error if projectName is not valid", func(t *testing.T) {
393392
namespaceName := "namespace-name"

core/scheduler/service/deployment_service.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
)
1111

1212
func (s JobRunService) UploadToScheduler(ctx context.Context, projectName tenant.ProjectName, namespaceName string) error {
13-
multiError := errors.NewMultiError("ErrorInUploadToScheduler")
13+
multiError := errors.NewMultiError("errorInUploadToScheduler")
1414
allJobsWithDetails, err := s.jobRepo.GetAll(ctx, projectName)
1515
multiError.Append(err)
1616
if allJobsWithDetails == nil {
@@ -28,7 +28,7 @@ func (s JobRunService) UploadToScheduler(ctx context.Context, projectName tenant
2828
}
2929
multiError.Append(err)
3030
}
31-
return errors.MultiToError(multiError)
31+
return multiError.ToErr()
3232
}
3333

3434
func (s JobRunService) deployJobsPerNamespace(ctx context.Context, t tenant.Tenant, jobs []*scheduler.JobWithDetails) error {

core/scheduler/service/deployment_service_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func TestDeploymentService(t *testing.T) {
5858

5959
err := runService.UploadToScheduler(ctx, proj1Name, namespace1Name.String())
6060
assert.NotNil(t, err)
61-
assert.EqualError(t, err, "ErrorInUploadToScheduler:\n GetAll error")
61+
assert.EqualError(t, err, "errorInUploadToScheduler:\n GetAll error")
6262
})
6363
t.Run("should return error if error in priority resolution", func(t *testing.T) {
6464
jobRepo := new(JobRepository)
@@ -74,7 +74,7 @@ func TestDeploymentService(t *testing.T) {
7474

7575
err := runService.UploadToScheduler(ctx, proj1Name, namespace1Name.String())
7676
assert.NotNil(t, err)
77-
assert.EqualError(t, err, "ErrorInUploadToScheduler:\n priority resolution error")
77+
assert.EqualError(t, err, "errorInUploadToScheduler:\n priority resolution error")
7878
})
7979
t.Run("should deploy Jobs Per Namespace returning error", func(t *testing.T) {
8080
jobRepo := new(JobRepository)
@@ -95,7 +95,7 @@ func TestDeploymentService(t *testing.T) {
9595

9696
err := runService.UploadToScheduler(ctx, proj1Name, namespace1Name.String())
9797
assert.NotNil(t, err)
98-
assert.EqualError(t, err, "ErrorInUploadToScheduler:\n DeployJobs tnnt1 error")
98+
assert.EqualError(t, err, "errorInUploadToScheduler:\n DeployJobs tnnt1 error")
9999
})
100100
t.Run("should deploy Jobs Per Namespace and cleanPerNamespace, appropriately", func(t *testing.T) {
101101
jobRepo := new(JobRepository)
@@ -148,7 +148,7 @@ func TestDeploymentService(t *testing.T) {
148148

149149
err := runService.UploadToScheduler(ctx, proj1Name, namespace1Name.String())
150150
assert.NotNil(t, err)
151-
assert.EqualError(t, err, "ErrorInUploadToScheduler:\n listJobs error")
151+
assert.EqualError(t, err, "errorInUploadToScheduler:\n listJobs error")
152152
})
153153
})
154154
}

ext/scheduler/airflow/dag/compiler_test.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,6 @@ func setupJobDetails(tnnt tenant.Tenant) *scheduler.JobWithDetails {
116116
TaskName: "bq-bq",
117117
State: "resolved",
118118
},
119-
{
120-
Host: "http://optimus.example.com",
121-
Tenant: tnnt1,
122-
JobName: "foo-inter-dep-job-unresolved",
123-
TaskName: "bq-bq",
124-
State: "unresolved",
125-
},
126119
{
127120
JobName: "foo-external-optimus-dep-job",
128121
Host: "http://optimus.external.io",

ext/scheduler/airflow/dag/upstream.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,6 @@ type Upstream struct {
2727
func SetupUpstreams(upstreams scheduler.Upstreams, host string) Upstreams {
2828
var ups []Upstream
2929
for _, u := range upstreams.UpstreamJobs {
30-
if u.State != "resolved" {
31-
continue
32-
}
3330
var upstreamHost string
3431
if !u.External {
3532
upstreamHost = host

internal/store/postgres/scheduler/job_repository.go

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,36 +51,36 @@ type JobUpstreams struct {
5151
JobName string
5252
ProjectName string
5353
UpstreamJobID uuid.UUID
54-
UpstreamJobName string
55-
UpstreamResourceUrn string
56-
UpstreamProjectName string
57-
UpstreamNamespaceName string
58-
UpstreamTaskName string
59-
UpstreamHost string
54+
UpstreamJobName sql.NullString
55+
UpstreamResourceUrn sql.NullString
56+
UpstreamProjectName sql.NullString
57+
UpstreamNamespaceName sql.NullString
58+
UpstreamTaskName sql.NullString
59+
UpstreamHost sql.NullString
6060
UpstreamType string
6161
UpstreamState string
62-
UpstreamExternal bool
62+
UpstreamExternal sql.NullBool
6363

6464
CreatedAt time.Time
6565
UpdatedAt time.Time
6666
}
6767

6868
func (j *JobUpstreams) toJobUpstreams() (*scheduler.JobUpstream, error) {
69-
t, err := tenant.NewTenant(j.UpstreamProjectName, j.UpstreamNamespaceName)
69+
t, err := tenant.NewTenant(j.UpstreamProjectName.String, j.UpstreamNamespaceName.String)
7070
if err != nil {
7171
return nil, err
7272
}
7373

7474
return &scheduler.JobUpstream{
75-
JobName: j.UpstreamJobName,
76-
Host: j.UpstreamHost,
77-
TaskName: j.UpstreamTaskName,
78-
DestinationURN: j.UpstreamResourceUrn,
75+
JobName: j.UpstreamJobName.String,
76+
Host: j.UpstreamHost.String,
77+
TaskName: j.UpstreamTaskName.String,
78+
DestinationURN: j.UpstreamResourceUrn.String,
7979
Tenant: t,
8080
Type: j.UpstreamType,
81-
External: j.UpstreamExternal,
81+
External: j.UpstreamExternal.Bool,
8282
State: j.UpstreamState,
83-
}, err
83+
}, nil
8484
}
8585

8686
type Job struct {
@@ -234,7 +234,7 @@ func FromRow(row pgx.Row) (*Job, error) {
234234
return nil, errors.NotFound(job.EntityJob, "job not found")
235235
}
236236

237-
return nil, errors.Wrap(scheduler.EntityJobRun, "error in reading row for resource", err)
237+
return nil, errors.Wrap(scheduler.EntityJobRun, "error in reading row for job", err)
238238
}
239239

240240
return &js, nil
@@ -263,9 +263,13 @@ func groupUpstreamsByJobName(jobUpstreams []JobUpstreams) (map[string][]*schedul
263263
jobUpstreamGroup := map[string][]*scheduler.JobUpstream{}
264264

265265
for _, upstream := range jobUpstreams {
266+
if upstream.UpstreamState != "resolved" {
267+
multiError.Append(errors.NewError(errors.ErrInvalidState, scheduler.EntityJobRun, "unresolved upstream "+upstream.UpstreamJobName.String+" for "+upstream.JobName))
268+
continue
269+
}
266270
schedulerUpstream, err := upstream.toJobUpstreams()
267271
if err != nil {
268-
msg := fmt.Sprintf("unable to parse upstream:%s for job:%s", upstream.UpstreamJobName, upstream.JobName)
272+
msg := fmt.Sprintf("unable to parse upstream:%s for job:%s", upstream.UpstreamJobName.String, upstream.JobName)
269273
multiError.Append(errors.Wrap(scheduler.EntityJobRun, msg, err))
270274
continue
271275
}

0 commit comments

Comments
 (0)