(client proto.DRPCProvisionerDaemonClient)
| 333 | } |
| 334 | |
| 335 | func (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), |
no test coverage detected