Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 22febc7

Browse files
authored
provisionerd sends failed or complete last (coder#2732)
* provisionerd sends failed or complete last Signed-off-by: Spike Curtis <[email protected]> * Move runner into package Signed-off-by: Spike Curtis <[email protected]> * Remove jobRunner interface Signed-off-by: Spike Curtis <[email protected]> * renames and slight reworking from code review Signed-off-by: Spike Curtis <[email protected]> * Reword comment about okToSend Signed-off-by: Spike Curtis <[email protected]>
1 parent e5d5fa7 commit 22febc7

File tree

8 files changed

+1099
-805
lines changed

8 files changed

+1099
-805
lines changed

agent/reaper/reaper_stub.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ func IsInitProcess() bool {
77
return false
88
}
99

10-
func ForkReap(opt ...Option) error {
10+
func ForkReap(_ ...Option) error {
1111
return nil
1212
}

coderd/coderdtest/coderdtest.go

+1
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,7 @@ func UpdateTemplateVersion(t *testing.T, client *codersdk.Client, organizationID
397397

398398
// AwaitTemplateImportJob awaits for an import job to reach completed status.
399399
func AwaitTemplateVersionJob(t *testing.T, client *codersdk.Client, version uuid.UUID) codersdk.TemplateVersion {
400+
t.Logf("waiting for template version job %s", version)
400401
var templateVersion codersdk.TemplateVersion
401402
require.Eventually(t, func() bool {
402403
var err error

coderd/provisionerdaemons.go

+12
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,7 @@ func (server *provisionerdServer) UpdateJob(ctx context.Context, request *proto.
331331
if err != nil {
332332
return nil, xerrors.Errorf("parse job id: %w", err)
333333
}
334+
server.Logger.Debug(ctx, "UpdateJob starting", slog.F("job_id", parsedID))
334335
job, err := server.Database.GetProvisionerJobByID(ctx, parsedID)
335336
if err != nil {
336337
return nil, xerrors.Errorf("get job: %w", err)
@@ -368,19 +369,27 @@ func (server *provisionerdServer) UpdateJob(ctx context.Context, request *proto.
368369
insertParams.Stage = append(insertParams.Stage, log.Stage)
369370
insertParams.Source = append(insertParams.Source, logSource)
370371
insertParams.Output = append(insertParams.Output, log.Output)
372+
server.Logger.Debug(ctx, "job log",
373+
slog.F("job_id", parsedID),
374+
slog.F("stage", log.Stage),
375+
slog.F("output", log.Output))
371376
}
372377
logs, err := server.Database.InsertProvisionerJobLogs(context.Background(), insertParams)
373378
if err != nil {
379+
server.Logger.Error(ctx, "failed to insert job logs", slog.F("job_id", parsedID), slog.Error(err))
374380
return nil, xerrors.Errorf("insert job logs: %w", err)
375381
}
382+
server.Logger.Debug(ctx, "inserted job logs", slog.F("job_id", parsedID))
376383
data, err := json.Marshal(logs)
377384
if err != nil {
378385
return nil, xerrors.Errorf("marshal job log: %w", err)
379386
}
380387
err = server.Pubsub.Publish(provisionerJobLogsChannel(parsedID), data)
381388
if err != nil {
389+
server.Logger.Error(ctx, "failed to publish job logs", slog.F("job_id", parsedID), slog.Error(err))
382390
return nil, xerrors.Errorf("publish job log: %w", err)
383391
}
392+
server.Logger.Debug(ctx, "published job logs", slog.F("job_id", parsedID))
384393
}
385394

386395
if len(request.Readme) > 0 {
@@ -489,6 +498,7 @@ func (server *provisionerdServer) FailJob(ctx context.Context, failJob *proto.Fa
489498
if err != nil {
490499
return nil, xerrors.Errorf("parse job id: %w", err)
491500
}
501+
server.Logger.Debug(ctx, "FailJob starting", slog.F("job_id", jobID))
492502
job, err := server.Database.GetProvisionerJobByID(ctx, jobID)
493503
if err != nil {
494504
return nil, xerrors.Errorf("get provisioner job: %w", err)
@@ -548,6 +558,7 @@ func (server *provisionerdServer) CompleteJob(ctx context.Context, completed *pr
548558
if err != nil {
549559
return nil, xerrors.Errorf("parse job id: %w", err)
550560
}
561+
server.Logger.Debug(ctx, "CompleteJob starting", slog.F("job_id", jobID))
551562
job, err := server.Database.GetProvisionerJobByID(ctx, jobID)
552563
if err != nil {
553564
return nil, xerrors.Errorf("get job by id: %w", err)
@@ -700,6 +711,7 @@ func (server *provisionerdServer) CompleteJob(ctx context.Context, completed *pr
700711
reflect.TypeOf(completed.Type).String())
701712
}
702713

714+
server.Logger.Debug(ctx, "CompleteJob done", slog.F("job_id", jobID))
703715
return &proto.Empty{}, nil
704716
}
705717

coderd/provisionerjobs.go

+4
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ func (api *API) provisionerJobLogs(rw http.ResponseWriter, r *http.Request, job
130130
for _, log := range logs {
131131
select {
132132
case bufferedLogs <- log:
133+
api.Logger.Debug(r.Context(), "subscribe buffered log", slog.F("job_id", job.ID), slog.F("stage", log.Stage))
133134
default:
134135
// If this overflows users could miss logs streaming. This can happen
135136
// if a database request takes a long amount of time, and we get a lot of logs.
@@ -176,8 +177,10 @@ func (api *API) provisionerJobLogs(rw http.ResponseWriter, r *http.Request, job
176177
for {
177178
select {
178179
case <-r.Context().Done():
180+
api.Logger.Debug(context.Background(), "job logs context canceled", slog.F("job_id", job.ID))
179181
return
180182
case log := <-bufferedLogs:
183+
api.Logger.Debug(r.Context(), "subscribe encoding log", slog.F("job_id", job.ID), slog.F("stage", log.Stage))
181184
err = encoder.Encode(convertProvisionerJobLog(log))
182185
if err != nil {
183186
return
@@ -189,6 +192,7 @@ func (api *API) provisionerJobLogs(rw http.ResponseWriter, r *http.Request, job
189192
continue
190193
}
191194
if job.CompletedAt.Valid {
195+
api.Logger.Debug(context.Background(), "streaming job logs done; job done", slog.F("job_id", job.ID))
192196
return
193197
}
194198
}

0 commit comments

Comments
 (0)