MCPcopy
hub / github.com/breejs/bree / run

Method run

src/index.js:350–498  ·  view source on GitHub ↗
(name)

Source from the content-addressed store, hash-verified

348 }
349
350 async run(name) {
351 debug('run', name);
352
353 if (!this._init) await this.init();
354
355 if (name) {
356 const job = this.config.jobs.find((j) => j.name === name);
357 if (!job) {
358 throw new Error(`Job "${name}" does not exist`);
359 }
360
361 if (this.workers.has(name)) {
362 this.config.logger.warn(
363 new Error(`Job "${name}" is already running`),
364 this.getWorkerMetadata(name)
365 );
366 return;
367 }
368
369 debug('starting worker', name);
370 const object = {
371 ...this.config.worker,
372 ...job.worker,
373 workerData: {
374 job: {
375 ...job,
376 ...(job.worker ? { worker: omit(job.worker, ['env']) } : {})
377 },
378 ...(this.config.worker && this.config.worker.workerData
379 ? this.config.worker.workerData
380 : {}),
381 ...(job.worker && job.worker.workerData ? job.worker.workerData : {})
382 }
383 };
384 this.workers.set(name, this.createWorker(job.path, object));
385 this.emit('worker created', name);
386 debug('worker started', name);
387
388 const prefix = `Worker for job "${name}"`;
389 this.workers.get(name).on('online', () => {
390 // If we specified a value for `closeWorkerAfterMs`
391 // then we need to terminate it after that execution time
392 const closeWorkerAfterMs = Number.isFinite(job.closeWorkerAfterMs)
393 ? job.closeWorkerAfterMs
394 : this.config.closeWorkerAfterMs;
395 if (Number.isFinite(closeWorkerAfterMs) && closeWorkerAfterMs > 0) {
396 debug('worker has close set', name, closeWorkerAfterMs);
397 this.closeWorkerAfterMs.set(
398 name,
399 setTimeout(() => {
400 /* istanbul ignore else */
401 if (this.workers.has(name)) {
402 debug('worker has been terminated', name);
403 this.workers.get(name).terminate();
404 }
405 }, closeWorkerAfterMs)
406 );
407 }

Callers 8

startMethod · 0.95
index.jsFile · 0.80
run.jsFile · 0.80
stop.jsFile · 0.80
issue-152.jsFile · 0.80
issue-171.jsFile · 0.80
test.jsFile · 0.80

Calls 8

initMethod · 0.95
getWorkerMetadataMethod · 0.95
createWorkerMethod · 0.95
handleJobCompletionMethod · 0.95
omitFunction · 0.85
warnMethod · 0.80
infoMethod · 0.80
errorMethod · 0.80

Tested by

no test coverage detected