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

Function New

provisionerd/runner/runner.go:125–171  ·  view source on GitHub ↗
(
	ctx context.Context,
	job *proto.AcquiredJob,
	opts Options,
)

Source from the content-addressed store, hash-verified

123}
124
125func 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//

Callers 1

acquireAndRunOneMethod · 0.92

Calls 2

GetWorkspaceBuildMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected