Skip to content

Commit 13889bf

Browse files
fix: track goroutine for test + use separate context for reporting
1 parent c43a143 commit 13889bf

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

agent/agentscripts/agentscripts.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ func (r *Runner) run(ctx context.Context, script codersdk.WorkspaceAgentScript,
338338
return
339339
}
340340

341-
go func() {
341+
r.trackCommandGoroutine(func() {
342342
var stage proto.Timing_Stage
343343
switch option {
344344
case ExecuteStartScripts:
@@ -349,7 +349,11 @@ func (r *Runner) run(ctx context.Context, script codersdk.WorkspaceAgentScript,
349349
stage = proto.Timing_CRON
350350
}
351351

352-
_, err = r.scriptCompleted(ctx, &proto.WorkspaceAgentScriptCompletedRequest{
352+
reportTimeout := 30 * time.Second
353+
reportCtx, cancel := context.WithTimeout(context.Background(), reportTimeout)
354+
defer cancel()
355+
356+
_, err = r.scriptCompleted(reportCtx, &proto.WorkspaceAgentScriptCompletedRequest{
353357
Timing: &proto.Timing{
354358
ScriptId: script.ID[:],
355359
Start: timestamppb.New(start),
@@ -362,7 +366,7 @@ func (r *Runner) run(ctx context.Context, script codersdk.WorkspaceAgentScript,
362366
if err != nil {
363367
logger.Error(ctx, fmt.Sprintf("reporting script completed: %s", err.Error()))
364368
}
365-
}()
369+
})
366370
}()
367371

368372
err = cmd.Start()

agent/agentscripts/agentscripts_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ func TestScriptReportsTiming(t *testing.T) {
120120
runner := setup(t, func(uuid2 uuid.UUID) agentscripts.ScriptLogger {
121121
return fLogger
122122
})
123-
defer runner.Close()
124123

125124
aAPI := agenttest.NewFakeAgentAPI(t, slogtest.Make(t, nil), nil, nil)
126125
err := runner.Init([]codersdk.WorkspaceAgentScript{{
@@ -129,7 +128,8 @@ func TestScriptReportsTiming(t *testing.T) {
129128
Script: "echo hello",
130129
}}, aAPI.ScriptCompleted)
131130
require.NoError(t, err)
132-
require.NoError(t, runner.Execute(context.Background(), agentscripts.ExecuteAllScripts))
131+
require.NoError(t, runner.Execute(ctx, agentscripts.ExecuteAllScripts))
132+
runner.Close()
133133

134134
log := testutil.RequireRecvCtx(ctx, t, fLogger.logs)
135135
require.Equal(t, "hello", log.Output)

0 commit comments

Comments
 (0)