( ctx context.Context, job *proto.AcquiredJob, opts Options, )
| 123 | } |
| 124 | |
| 125 | func New( |
| 126 | ctx context.Context, |
| 127 | job *proto.AcquiredJob, |
| 128 | opts Options, |
| 129 | ) *Runner { |
| 130 | m := new(sync.Mutex) |
| 131 | |
| 132 | // we need to create our contexts here in case a call to Cancel() comes immediately. |
| 133 | forceStopContext, forceStopFunc := context.WithCancel(ctx) |
| 134 | gracefulContext, cancelFunc := context.WithCancel(forceStopContext) |
| 135 | |
| 136 | logger := opts.Logger.With(slog.F("job_id", job.JobId)) |
| 137 | if build := job.GetWorkspaceBuild(); build != nil { |
| 138 | logger = logger.With( |
| 139 | slog.F("template_name", build.Metadata.TemplateName), |
| 140 | slog.F("template_version", build.Metadata.TemplateVersion), |
| 141 | slog.F("workspace_build_id", build.WorkspaceBuildId), |
| 142 | slog.F("workspace_id", build.Metadata.WorkspaceId), |
| 143 | slog.F("workspace_name", build.Metadata.WorkspaceName), |
| 144 | slog.F("workspace_owner", build.Metadata.WorkspaceOwner), |
| 145 | slog.F("workspace_transition", strings.ToLower(build.Metadata.WorkspaceTransition.String())), |
| 146 | ) |
| 147 | } |
| 148 | |
| 149 | return &Runner{ |
| 150 | tracer: opts.Tracer, |
| 151 | metrics: opts.Metrics, |
| 152 | job: job, |
| 153 | sender: opts.Updater, |
| 154 | quotaCommitter: opts.QuotaCommitter, |
| 155 | fileDownloader: opts.FileDownloader, |
| 156 | logger: logger, |
| 157 | provisioner: opts.Provisioner, |
| 158 | updateInterval: opts.UpdateInterval, |
| 159 | forceCancelInterval: opts.ForceCancelInterval, |
| 160 | logBufferInterval: opts.LogDebounceInterval, |
| 161 | queuedLogs: make([]*proto.Log, 0), |
| 162 | mutex: m, |
| 163 | cond: sync.NewCond(m), |
| 164 | done: make(chan struct{}), |
| 165 | okToSend: true, |
| 166 | notStopped: forceStopContext, |
| 167 | stop: forceStopFunc, |
| 168 | notCanceled: gracefulContext, |
| 169 | cancel: cancelFunc, |
| 170 | } |
| 171 | } |
| 172 | |
| 173 | // Run executes the job. |
| 174 | // |
no test coverage detected