From 292dc73e28d585675f7980c3310a4ac8cde98354 Mon Sep 17 00:00:00 2001 From: Conrad Hoffmann Date: Fri, 25 Nov 2022 17:07:56 +0100 Subject: [PATCH] api: pass job owner to StartJobGroupUnsafe() This allows it to make use of the index on `owner_id` in the `job` table. Without this, the query it makes is prohibitively expensive. A sample query analysis went from > 1800 ms without the index to < 1ms when using the index. --- api/graph/resolver.go | 8 +++++--- api/graph/schema.resolvers.go | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/api/graph/resolver.go b/api/graph/resolver.go index ad9020c..9e30065 100644 --- a/api/graph/resolver.go +++ b/api/graph/resolver.go @@ -66,7 +66,7 @@ func FetchLogs(ctx context.Context, url string) (*model.Log, error) { } // Starts a job group. Does not authenticate the user. -func StartJobGroupUnsafe(ctx context.Context, tx *sql.Tx, id int) error { +func StartJobGroupUnsafe(ctx context.Context, tx *sql.Tx, id, ownerID int) error { var manifests []struct { ID int Manifest *Manifest @@ -74,9 +74,11 @@ func StartJobGroupUnsafe(ctx context.Context, tx *sql.Tx, id int) error { rows, err := tx.QueryContext(ctx, ` UPDATE job SET status = 'queued' - WHERE job_group_id = $1 + WHERE + job_group_id = $1 AND + owner_id = $2 RETURNING id, manifest; - `, id) + `, id, ownerID) if err != nil { return err } diff --git a/api/graph/schema.resolvers.go b/api/graph/schema.resolvers.go index 41541cb..23b4d1e 100644 --- a/api/graph/schema.resolvers.go +++ b/api/graph/schema.resolvers.go @@ -540,7 +540,7 @@ func (r *mutationResolver) CreateGroup(ctx context.Context, jobIds []int, trigge return nil } - return StartJobGroupUnsafe(ctx, tx, group.ID) + return StartJobGroupUnsafe(ctx, tx, group.ID, group.OwnerID) }); err != nil { return nil, err } @@ -566,7 +566,7 @@ func (r *mutationResolver) StartGroup(ctx context.Context, groupID int) (*model. return err } - return StartJobGroupUnsafe(ctx, tx, groupID) + return StartJobGroupUnsafe(ctx, tx, groupID, group.OwnerID) }); err != nil { return nil, err } -- 2.38.5