Skip to content

Commit de37a56

Browse files
committed
chore: add stage_seq to disambiguate similar stages
1 parent 33f870d commit de37a56

File tree

23 files changed

+239
-145
lines changed

23 files changed

+239
-145
lines changed

coderd/database/dbgen/dbgen.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1615,6 +1615,7 @@ func provisionerJobTiming(t testing.TB, db database.Store, seed database.Provisi
16151615
StartedAt: []time.Time{takeFirst(seed.StartedAt, dbtime.Now())},
16161616
EndedAt: []time.Time{takeFirst(seed.EndedAt, dbtime.Now())},
16171617
Stage: []database.ProvisionerJobTimingStage{takeFirst(seed.Stage, database.ProvisionerJobTimingStageInit)},
1618+
StageSeq: []int32{seed.StageSeq},
16181619
Source: []string{takeFirst(seed.Source, "source")},
16191620
Action: []string{takeFirst(seed.Action, "action")},
16201621
Resource: []string{takeFirst(seed.Resource, "resource")},

coderd/database/dump.sql

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/migrations/000399_build_timing_stage_seq.up.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
ALTER TABLE ONLY
22
provisioner_job_timings
3-
ADD COLUMN stage_seq integer DEFAULT 0;
3+
ADD COLUMN stage_seq integer NOT NULL DEFAULT 0;
44

55
COMMENT ON COLUMN
66
provisioner_job_timings.stage_seq IS

coderd/database/models.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 9 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/provisionerjobs.sql

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -329,15 +329,16 @@ ORDER BY random()
329329
LIMIT @max_jobs;
330330

331331
-- name: InsertProvisionerJobTimings :many
332-
INSERT INTO provisioner_job_timings (job_id, started_at, ended_at, stage, source, action, resource)
332+
INSERT INTO provisioner_job_timings (job_id, started_at, ended_at, stage, source, action, resource, stage_seq)
333333
SELECT
334334
@job_id::uuid AS provisioner_job_id,
335335
unnest(@started_at::timestamptz[]),
336336
unnest(@ended_at::timestamptz[]),
337337
unnest(@stage::provisioner_job_timing_stage[]),
338338
unnest(@source::text[]),
339339
unnest(@action::text[]),
340-
unnest(@resource::text[])
340+
unnest(@resource::text[]),
341+
unnest(@stage_seq::integer[])
341342
RETURNING *;
342343

343344
-- name: GetProvisionerJobTimingsByJobID :many

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2182,6 +2182,7 @@ func (s *server) completeWorkspaceBuildJob(ctx context.Context, job database.Pro
21822182
}
21832183

21842184
params.Stage = append(params.Stage, stg)
2185+
params.StageSeq = append(params.StageSeq, t.StageSeq)
21852186
params.Source = append(params.Source, t.Source)
21862187
params.Resource = append(params.Resource, t.Resource)
21872188
params.Action = append(params.Action, t.Action)

coderd/workspacebuilds.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,13 +1295,14 @@ func (api *API) buildTimings(ctx context.Context, build database.WorkspaceBuild)
12951295
}
12961296

12971297
res.ProvisionerTimings = append(res.ProvisionerTimings, codersdk.ProvisionerTiming{
1298-
JobID: t.JobID,
1299-
Stage: codersdk.TimingStage(t.Stage),
1300-
Source: t.Source,
1301-
Action: t.Action,
1302-
Resource: t.Resource,
1303-
StartedAt: t.StartedAt,
1304-
EndedAt: t.EndedAt,
1298+
JobID: t.JobID,
1299+
Stage: codersdk.TimingStage(t.Stage),
1300+
StageSequence: t.StageSeq,
1301+
Source: t.Source,
1302+
Action: t.Action,
1303+
Resource: t.Resource,
1304+
StartedAt: t.StartedAt,
1305+
EndedAt: t.EndedAt,
13051306
})
13061307
}
13071308
for _, t := range agentScriptTimings {

codersdk/workspacebuilds.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -231,13 +231,14 @@ const (
231231
)
232232

233233
type ProvisionerTiming struct {
234-
JobID uuid.UUID `json:"job_id" format:"uuid"`
235-
StartedAt time.Time `json:"started_at" format:"date-time"`
236-
EndedAt time.Time `json:"ended_at" format:"date-time"`
237-
Stage TimingStage `json:"stage"`
238-
Source string `json:"source"`
239-
Action string `json:"action"`
240-
Resource string `json:"resource"`
234+
JobID uuid.UUID `json:"job_id" format:"uuid"`
235+
StartedAt time.Time `json:"started_at" format:"date-time"`
236+
EndedAt time.Time `json:"ended_at" format:"date-time"`
237+
Stage TimingStage `json:"stage"`
238+
StageSequence int32 `json:"stage_sequence"`
239+
Source string `json:"source"`
240+
Action string `json:"action"`
241+
Resource string `json:"resource"`
241242
}
242243

243244
type AgentScriptTiming struct {

provisioner/terraform/executor.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -325,15 +325,15 @@ func (e *executor) plan(ctx, killCtx context.Context, env, vars []string, logr l
325325
<-doneErr
326326
}()
327327

328-
endStage := e.timings.startStage(database.ProvisionerJobTimingStagePlan)
328+
endStage := e.timings.startStage(database.ProvisionerJobTimingStagePlan, 0)
329329
err := e.execWriteOutput(ctx, killCtx, args, env, outWriter, errWriter)
330330
endStage(err)
331331
if err != nil {
332332
return nil, xerrors.Errorf("terraform plan: %w", err)
333333
}
334334

335335
// Capture the duration of the call to `terraform graph`.
336-
endGraph := e.timings.startStage(database.ProvisionerJobTimingStageGraph)
336+
endGraph := e.timings.startStage(database.ProvisionerJobTimingStageGraph, 0)
337337
state, plan, err := e.planResources(ctx, killCtx, planfilePath)
338338
endGraph(err)
339339
if err != nil {
@@ -595,17 +595,18 @@ func (e *executor) apply(
595595
}()
596596

597597
// `terraform apply`
598-
endStage := e.timings.startStage(database.ProvisionerJobTimingStageApply)
598+
endStage := e.timings.startStage(database.ProvisionerJobTimingStageApply, 0)
599599
err := e.execWriteOutput(ctx, killCtx, args, env, outWriter, errWriter)
600600
endStage(err)
601601
if err != nil {
602602
return nil, xerrors.Errorf("terraform apply: %w", err)
603603
}
604604

605605
// `terraform show` & `terraform graph`
606-
// endGraph := e.timings.startStage(database.ProvisionerJobTimingStageGraph)
606+
// The sequence number is `1` as `graph` has already been called during `plan`. (the 0th stage)
607+
endGraph := e.timings.startStage(database.ProvisionerJobTimingStageGraph, 1)
607608
state, err := e.stateResources(ctx, killCtx)
608-
// endGraph(err)
609+
endGraph(err)
609610
if err != nil {
610611
return nil, err
611612
}

0 commit comments

Comments
 (0)