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

Method acquireAndRunOne

provisionerd/provisionerd.go:335–437  ·  view source on GitHub ↗
(client proto.DRPCProvisionerDaemonClient)

Source from the content-addressed store, hash-verified

333}
334
335func (p *Server) acquireAndRunOne(client proto.DRPCProvisionerDaemonClient) error {
336 ctx := p.closeContext
337 p.opts.Logger.Debug(ctx, "start of acquireAndRunOne")
338 job, err := p.acquireGraceful(client)
339 p.opts.Logger.Debug(ctx, "graceful acquire done", slog.F("job_id", job.GetJobId()), slog.Error(err))
340 if err != nil {
341 if errors.Is(err, context.Canceled) ||
342 errors.Is(err, yamux.ErrSessionShutdown) ||
343 errors.Is(err, fasthttputil.ErrInmemoryListenerClosed) {
344 return err
345 }
346
347 p.opts.Logger.Warn(ctx, "provisionerd was unable to acquire job", slog.Error(err))
348 return xerrors.Errorf("failed to acquire job: %w", err)
349 }
350 if job.JobId == "" {
351 p.opts.Logger.Debug(ctx, "acquire job successfully canceled")
352 return nil
353 }
354
355 if len(job.TraceMetadata) > 0 {
356 ctx = tracing.MetadataToContext(ctx, job.TraceMetadata)
357 }
358 ctx, span := p.tracer.Start(ctx, tracing.FuncName(), trace.WithAttributes(
359 semconv.ServiceNameKey.String("coderd.provisionerd"),
360 attribute.String("job_id", job.JobId),
361 attribute.String("job_type", reflect.TypeOf(job.GetType()).Elem().Name()),
362 attribute.Int64("job_created_at", job.CreatedAt),
363 attribute.String("initiator_username", job.UserName),
364 attribute.String("provisioner", job.Provisioner),
365 attribute.Int("template_size_bytes", len(job.TemplateSourceArchive)),
366 ))
367 defer span.End()
368
369 fields := []slog.Field{
370 slog.F("initiator_username", job.UserName),
371 slog.F("provisioner", job.Provisioner),
372 slog.F("job_id", job.JobId),
373 }
374
375 if build := job.GetWorkspaceBuild(); build != nil {
376 fields = append(fields,
377 slog.F("workspace_transition", build.Metadata.WorkspaceTransition.String()),
378 slog.F("workspace_owner", build.Metadata.WorkspaceOwner),
379 slog.F("template_name", build.Metadata.TemplateName),
380 slog.F("template_version", build.Metadata.TemplateVersion),
381 slog.F("workspace_build_id", build.WorkspaceBuildId),
382 slog.F("workspace_id", build.Metadata.WorkspaceId),
383 slog.F("workspace_name", build.WorkspaceName),
384 slog.F("prebuilt_workspace_build_stage", build.Metadata.GetPrebuiltWorkspaceBuildStage().String()),
385 )
386
387 span.SetAttributes(
388 attribute.String("workspace_build_id", build.WorkspaceBuildId),
389 attribute.String("workspace_id", build.Metadata.WorkspaceId),
390 attribute.String("workspace_name", build.WorkspaceName),
391 attribute.String("workspace_owner_id", build.Metadata.WorkspaceOwnerId),
392 attribute.String("workspace_owner", build.Metadata.WorkspaceOwner),

Callers 1

acquireLoopMethod · 0.95

Calls 15

acquireGracefulMethod · 0.95
FailJobMethod · 0.95
MetadataToContextFunction · 0.92
FuncNameFunction · 0.92
NewFunction · 0.92
Int64Method · 0.80
IntMethod · 0.80
NamedMethod · 0.80
StartMethod · 0.65
NameMethod · 0.65
ConnectMethod · 0.65

Tested by

no test coverage detected