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

Method UpdateJob

coderd/provisionerdserver/provisionerdserver.go:952–1182  ·  view source on GitHub ↗
(ctx context.Context, request *proto.UpdateJobRequest)

Source from the content-addressed store, hash-verified

950}
951
952func (s *server) UpdateJob(ctx context.Context, request *proto.UpdateJobRequest) (*proto.UpdateJobResponse, error) {
953 ctx, span := s.startTrace(ctx, tracing.FuncName())
954 defer span.End()
955
956 //nolint:gocritic // Provisionerd has specific authz rules.
957 ctx = dbauthz.AsProvisionerd(ctx)
958 parsedID, err := uuid.Parse(request.JobId)
959 if err != nil {
960 return nil, xerrors.Errorf("parse job id: %w", err)
961 }
962 s.Logger.Debug(ctx, "stage UpdateJob starting", slog.F("job_id", parsedID))
963 job, err := s.Database.GetProvisionerJobByID(ctx, parsedID)
964 if err != nil {
965 return nil, xerrors.Errorf("get job: %w", err)
966 }
967 if !job.WorkerID.Valid {
968 return nil, xerrors.New("job isn't running yet")
969 }
970 if job.WorkerID.UUID.String() != s.ID.String() {
971 return nil, xerrors.New("you don't own this job")
972 }
973 err = s.Database.UpdateProvisionerJobByID(ctx, database.UpdateProvisionerJobByIDParams{
974 ID: parsedID,
975 UpdatedAt: s.timeNow(),
976 })
977 if err != nil {
978 return nil, xerrors.Errorf("update job: %w", err)
979 }
980
981 if len(request.Logs) > 0 && !job.LogsOverflowed {
982 //nolint:exhaustruct // We append to the additional fields below.
983 insertParams := database.InsertProvisionerJobLogsParams{
984 JobID: parsedID,
985 }
986
987 newLogSize := 0
988 overflowedErrorMsg := "Provisioner logs exceeded the max size of 1MB. Will not continue to write provisioner logs for workspace build."
989 lenErrMsg := len(overflowedErrorMsg)
990
991 var (
992 createdAt time.Time
993 level database.LogLevel
994 stage string
995 source database.LogSource
996 output string
997 )
998
999 for _, log := range request.Logs {
1000 // Build our log params
1001 level, err = convertLogLevel(log.Level)
1002 if err != nil {
1003 return nil, xerrors.Errorf("convert log level: %w", err)
1004 }
1005 source, err = convertLogSource(log.Source)
1006 if err != nil {
1007 return nil, xerrors.Errorf("convert log source: %w", err)
1008 }
1009 createdAt = time.UnixMilli(log.CreatedAt)

Callers

nothing calls this directly

Calls 15

startTraceMethod · 0.95
timeNowMethod · 0.95
FuncNameFunction · 0.92
AsProvisionerdFunction · 0.92
convertLogLevelFunction · 0.85
convertLogSourceFunction · 0.85
redactTemplateVariableFunction · 0.85
ParseMethod · 0.65
GetProvisionerJobByIDMethod · 0.65
NewMethod · 0.65

Tested by

no test coverage detected