AcquireJob queries the database to lock a job. Deprecated: This method is only available for back-level provisioner daemons.
(ctx context.Context, _ *proto.Empty)
| 332 | // |
| 333 | // Deprecated: This method is only available for back-level provisioner daemons. |
| 334 | func (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 | |
| 354 | type jobAndErr struct { |
| 355 | job database.ProvisionerJob |
nothing calls this directly
no test coverage detected