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

Method AcquireJob

coderd/provisionerdserver/provisionerdserver.go:334–352  ·  view source on GitHub ↗

AcquireJob queries the database to lock a job. Deprecated: This method is only available for back-level provisioner daemons.

(ctx context.Context, _ *proto.Empty)

Source from the content-addressed store, hash-verified

332//
333// Deprecated: This method is only available for back-level provisioner daemons.
334func (s *server) AcquireJob(ctx context.Context, _ *proto.Empty) (*proto.AcquiredJob, error) {
335 //nolint:gocritic // Provisionerd has specific authz rules.
336 ctx = dbauthz.AsProvisionerd(ctx)
337 // Since AcquireJob blocks until a job is available, we set a long (5s by default) timeout. This allows back-level
338 // provisioner daemons to gracefully shut down within a few seconds, but keeps them from rapidly polling the
339 // database.
340 acqCtx, acqCancel := context.WithTimeout(ctx, s.acquireJobLongPollDur)
341 defer acqCancel()
342 job, err := s.Acquirer.AcquireJob(acqCtx, s.OrganizationID, s.ID, s.Provisioners, s.Tags)
343 if database.IsQueryCanceledError(err) {
344 s.Logger.Debug(ctx, "successful cancel")
345 return &proto.AcquiredJob{}, nil
346 }
347 if err != nil {
348 return nil, xerrors.Errorf("acquire job: %w", err)
349 }
350 s.Logger.Debug(ctx, "locked job from database", slog.F("job_id", job.ID))
351 return s.acquireProtoJob(ctx, job)
352}
353
354type jobAndErr struct {
355 job database.ProvisionerJob

Callers

nothing calls this directly

Calls 5

acquireProtoJobMethod · 0.95
AsProvisionerdFunction · 0.92
IsQueryCanceledErrorFunction · 0.92
AcquireJobMethod · 0.65
ErrorfMethod · 0.45

Tested by

no test coverage detected