(name)
| 648 | } |
| 649 | |
| 650 | async stop(name) { |
| 651 | debug('stop', name); |
| 652 | |
| 653 | if (!this._init) await this.init(); |
| 654 | |
| 655 | if (name) { |
| 656 | this.removeSafeTimer('timeouts', name); |
| 657 | this.removeSafeTimer('intervals', name); |
| 658 | |
| 659 | if (this.workers.has(name)) { |
| 660 | this.workers.get(name).once('message', (message) => { |
| 661 | if (message === 'cancelled') { |
| 662 | this.config.logger.info( |
| 663 | `Gracefully cancelled worker for job "${name}"`, |
| 664 | this.getWorkerMetadata(name) |
| 665 | ); |
| 666 | this.workers.get(name).terminate(); |
| 667 | } |
| 668 | }); |
| 669 | this.workers.get(name).postMessage('cancel'); |
| 670 | } |
| 671 | |
| 672 | this.removeSafeTimer('closeWorkerAfterMs', name); |
| 673 | |
| 674 | return pWaitFor(() => !this.workers.has(name)); |
| 675 | } |
| 676 | |
| 677 | for (const job of this.config.jobs) { |
| 678 | this.stop(job.name); |
| 679 | } |
| 680 | |
| 681 | return pWaitFor(() => this.workers.size === 0); |
| 682 | } |
| 683 | |
| 684 | async add(jobs) { |
| 685 | debug('add', jobs); |
no test coverage detected