MCPcopy Index your code
hub / github.com/coder/coder / acquireProtoJob

Method acquireProtoJob

coderd/provisionerdserver/provisionerdserver.go:445–864  ·  view source on GitHub ↗
(ctx context.Context, job database.ProvisionerJob)

Source from the content-addressed store, hash-verified

443}
444
445func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJob) (*proto.AcquiredJob, error) {
446 // Marks the acquired job as failed with the error message provided.
447 failJob := func(errorMessage string) error {
448 err := s.Database.UpdateProvisionerJobWithCompleteByID(ctx, database.UpdateProvisionerJobWithCompleteByIDParams{
449 ID: job.ID,
450 CompletedAt: sql.NullTime{
451 Time: s.timeNow(),
452 Valid: true,
453 },
454 Error: sql.NullString{
455 String: errorMessage,
456 Valid: true,
457 },
458 ErrorCode: job.ErrorCode,
459 UpdatedAt: s.timeNow(),
460 })
461 if err != nil {
462 return xerrors.Errorf("update provisioner job: %w", err)
463 }
464 return xerrors.Errorf("request job was invalidated: %s", errorMessage)
465 }
466
467 user, err := s.Database.GetUserByID(ctx, job.InitiatorID)
468 if err != nil {
469 return nil, failJob(fmt.Sprintf("get user: %s", err))
470 }
471
472 jobTraceMetadata := map[string]string{}
473 if job.TraceMetadata.Valid {
474 err := json.Unmarshal(job.TraceMetadata.RawMessage, &jobTraceMetadata)
475 if err != nil {
476 return nil, failJob(fmt.Sprintf("unmarshal metadata: %s", err))
477 }
478 }
479
480 protoJob := &proto.AcquiredJob{
481 JobId: job.ID.String(),
482 CreatedAt: job.CreatedAt.UnixMilli(),
483 Provisioner: string(job.Provisioner),
484 UserName: user.Username,
485 TraceMetadata: jobTraceMetadata,
486 }
487
488 // jobTransition and jobBuildReason are used for metrics; only set for workspace builds.
489 var jobTransition string
490 var jobBuildReason string
491
492 switch job.Type {
493 case database.ProvisionerJobTypeWorkspaceBuild:
494 var input WorkspaceProvisionJob
495 err = json.Unmarshal(job.Input, &input)
496 if err != nil {
497 return nil, failJob(fmt.Sprintf("unmarshal job input %q: %s", job.Input, err))
498 }
499 workspaceBuild, err := s.Database.GetWorkspaceBuildByID(ctx, input.WorkspaceBuildID)
500 if err != nil {
501 return nil, failJob(fmt.Sprintf("get workspace build: %s", err))
502 }

Callers 2

AcquireJobMethod · 0.95
AcquireJobWithCancelMethod · 0.95

Calls 15

timeNowMethod · 0.95
RefreshTokenMethod · 0.95
WorkspaceEventChannelFunction · 0.92
IsInvalidTokenErrorFunction · 0.92
ObtainOIDCAccessTokenFunction · 0.85
deleteSessionTokenFunction · 0.85
asVariableValuesFunction · 0.85
convertVariableValuesFunction · 0.85

Tested by

no test coverage detected