@@ -371,28 +371,28 @@ func (q *fakeQuerier) GetTemplateAverageBuildTime(ctx context.Context, arg datab
371
371
deleteTimes []float64
372
372
)
373
373
q .mutex .RLock ()
374
- workspaceBuilds := slices .Clone (q .workspaceBuilds )
375
- q .mutex .RUnlock ()
376
- for _ , wb := range workspaceBuilds {
377
- version , err := q .GetTemplateVersionByID (ctx , wb .TemplateVersionID )
374
+ defer q .mutex .RUnlock ()
375
+ for _ , wb := range q .workspaceBuilds {
376
+ version , err := q .getTemplateVersionByIDNoLock (ctx , wb .TemplateVersionID )
378
377
if err != nil {
379
378
return emptyRow , err
380
379
}
381
380
if version .TemplateID != arg .TemplateID {
382
381
continue
383
382
}
384
383
385
- job , err := q .GetProvisionerJobByID (ctx , wb .JobID )
384
+ job , err := q .getProvisionerJobByIDNoLock (ctx , wb .JobID )
386
385
if err != nil {
387
386
return emptyRow , err
388
387
}
389
388
if job .CompletedAt .Valid {
390
389
took := job .CompletedAt .Time .Sub (job .StartedAt .Time ).Seconds ()
391
- if wb .Transition == database .WorkspaceTransitionStart {
390
+ switch wb .Transition {
391
+ case database .WorkspaceTransitionStart :
392
392
startTimes = append (startTimes , took )
393
- } else if wb . Transition == database .WorkspaceTransitionStop {
393
+ case database .WorkspaceTransitionStop :
394
394
stopTimes = append (stopTimes , took )
395
- } else if wb . Transition == database .WorkspaceTransitionDelete {
395
+ case database .WorkspaceTransitionDelete :
396
396
deleteTimes = append (deleteTimes , took )
397
397
}
398
398
}
@@ -1800,10 +1800,14 @@ func (q *fakeQuerier) GetTemplateVersionParameters(_ context.Context, templateVe
1800
1800
return parameters , nil
1801
1801
}
1802
1802
1803
- func (q * fakeQuerier ) GetTemplateVersionByID (_ context.Context , templateVersionID uuid.UUID ) (database.TemplateVersion , error ) {
1803
+ func (q * fakeQuerier ) GetTemplateVersionByID (ctx context.Context , templateVersionID uuid.UUID ) (database.TemplateVersion , error ) {
1804
1804
q .mutex .RLock ()
1805
1805
defer q .mutex .RUnlock ()
1806
1806
1807
+ return q .getTemplateVersionByIDNoLock (ctx , templateVersionID )
1808
+ }
1809
+
1810
+ func (q * fakeQuerier ) getTemplateVersionByIDNoLock (_ context.Context , templateVersionID uuid.UUID ) (database.TemplateVersion , error ) {
1807
1811
for _ , templateVersion := range q .templateVersions {
1808
1812
if templateVersion .ID != templateVersionID {
1809
1813
continue
@@ -2235,10 +2239,14 @@ func (q *fakeQuerier) GetWorkspaceAppByAgentIDAndSlug(_ context.Context, arg dat
2235
2239
return database.WorkspaceApp {}, sql .ErrNoRows
2236
2240
}
2237
2241
2238
- func (q * fakeQuerier ) GetProvisionerJobByID (_ context.Context , id uuid.UUID ) (database.ProvisionerJob , error ) {
2242
+ func (q * fakeQuerier ) GetProvisionerJobByID (ctx context.Context , id uuid.UUID ) (database.ProvisionerJob , error ) {
2239
2243
q .mutex .RLock ()
2240
2244
defer q .mutex .RUnlock ()
2241
2245
2246
+ return q .getProvisionerJobByIDNoLock (ctx , id )
2247
+ }
2248
+
2249
+ func (q * fakeQuerier ) getProvisionerJobByIDNoLock (_ context.Context , id uuid.UUID ) (database.ProvisionerJob , error ) {
2242
2250
for _ , provisionerJob := range q .provisionerJobs {
2243
2251
if provisionerJob .ID != id {
2244
2252
continue
0 commit comments