- /** @inheritDoc */
- protected async destroyWorkerNode (workerNodeKey: number): Promise<void> {
- this.flagWorkerNodeAsNotReady(workerNodeKey)
- this.flushTasksQueue(workerNodeKey)
- // FIXME: wait for tasks to be finished
- const workerNode = this.workerNodes[workerNodeKey]
- const worker = workerNode.worker
- const waitWorkerExit = new Promise<void>(resolve => {
- worker.once('exit', () => {
- resolve()
- })
- })
- await this.sendKillMessageToWorker(workerNodeKey)
- workerNode.closeChannel()
- workerNode.removeAllListeners()
- await worker.terminate()
- await waitWorkerExit
- }
-