Skip to content

Commit 6b8d466

Browse files
committed
chore: move timing aggregation and timing to outside the cmd exec
1 parent 11795c5 commit 6b8d466

File tree

2 files changed

+7
-12
lines changed

2 files changed

+7
-12
lines changed

provisioner/terraform/executor.go

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

328-
endStage := e.timings.startStage(database.ProvisionerJobTimingStagePlan)
329328
err := e.execWriteOutput(ctx, killCtx, args, env, outWriter, errWriter)
330-
endStage(err)
331329
if err != nil {
332330
return nil, xerrors.Errorf("terraform plan: %w", err)
333331
}
@@ -386,13 +384,11 @@ func (e *executor) plan(ctx, killCtx context.Context, env, vars []string, logr l
386384
}
387385
}
388386

389-
// DoneOut must be completed before we aggregate timings to ensure all logs have been processed.
390-
<-doneOut
391387
msg := &proto.PlanComplete{
392388
Parameters: state.Parameters,
393389
Resources: state.Resources,
394390
ExternalAuthProviders: state.ExternalAuthProviders,
395-
Timings: append(e.timings.aggregate(), graphTimings.aggregate()...),
391+
Timings: graphTimings.aggregate(),
396392
Presets: state.Presets,
397393
Plan: planJSON,
398394
ResourceReplacements: resReps,
@@ -601,9 +597,7 @@ func (e *executor) apply(
601597
}()
602598

603599
// `terraform apply`
604-
endStage := e.timings.startStage(database.ProvisionerJobTimingStageApply)
605600
err := e.execWriteOutput(ctx, killCtx, args, env, outWriter, errWriter)
606-
endStage(err)
607601
if err != nil {
608602
return nil, xerrors.Errorf("terraform apply: %w", err)
609603
}
@@ -619,15 +613,11 @@ func (e *executor) apply(
619613
return nil, xerrors.Errorf("read statefile %q: %w", statefilePath, err)
620614
}
621615

622-
// DoneOut must be completed before we aggregate timings to ensure all logs have been processed.
623-
<-doneOut
624-
agg := e.timings.aggregate()
625616
return &proto.ApplyComplete{
626617
Parameters: state.Parameters,
627618
Resources: state.Resources,
628619
ExternalAuthProviders: state.ExternalAuthProviders,
629620
State: stateContent,
630-
Timings: agg,
631621
AiTasks: state.AITasks,
632622
}, nil
633623
}

provisioner/terraform/provision.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,16 @@ func (s *server) Plan(
160160
return provisionersdk.PlanErrorf("plan vars: %s", err)
161161
}
162162

163+
endPlanStage := e.timings.startStage(database.ProvisionerJobTimingStagePlan)
163164
resp, err := e.plan(ctx, killCtx, env, vars, sess, request)
165+
endPlanStage(err)
164166
if err != nil {
165167
return provisionersdk.PlanErrorf("%s", err.Error())
166168
}
167169

168170
// Prepend init timings since they occur prior to plan timings.
169171
// Order is irrelevant; this is merely indicative.
170-
resp.Timings = append(initTimings.aggregate(), resp.Timings...) // mergeInitTimings(initTimings.aggregate(), resp.Timings)
172+
resp.Timings = append(resp.Timings, append(initTimings.aggregate(), e.timings.aggregate()...)...)
171173
resp.Modules = modules
172174
return resp
173175
}
@@ -204,9 +206,11 @@ func (s *server) Apply(
204206
return provisionersdk.ApplyErrorf("provision env: %s", err)
205207
}
206208
env = otelEnvInject(ctx, env)
209+
endStage := e.timings.startStage(database.ProvisionerJobTimingStageApply)
207210
resp, err := e.apply(
208211
ctx, killCtx, env, sess,
209212
)
213+
endStage(err)
210214
if err != nil {
211215
errorMessage := err.Error()
212216
// Terraform can fail and apply and still need to store it's state.
@@ -217,6 +221,7 @@ func (s *server) Apply(
217221
Error: errorMessage,
218222
}
219223
}
224+
resp.Timings = e.timings.aggregate()
220225
return resp
221226
}
222227

0 commit comments

Comments
 (0)