X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fworker-node.ts;h=523036a5eac6f57db2966131652b29da6423fea1;hb=1ed7a87e83b78a56a968b50e9094ed56c5a79d35;hp=73b2c70c3f3b05ce1031bf57fe5522c40874cfa6;hpb=3bcbd4c5be5678988281342a1fc1f6a62f9c77d7;p=poolifier.git diff --git a/src/pools/worker-node.ts b/src/pools/worker-node.ts index 73b2c70c..523036a5 100644 --- a/src/pools/worker-node.ts +++ b/src/pools/worker-node.ts @@ -2,7 +2,7 @@ import { MessageChannel } from 'node:worker_threads' import { EventEmitter } from 'node:events' import { CircularArray } from '../circular-array.js' import type { Task } from '../utility-types.js' -import { DEFAULT_TASK_NAME, getWorkerId, getWorkerType } from '../utils.js' +import { DEFAULT_TASK_NAME } from '../utils.js' import { Deque } from '../deque.js' import { type EventHandler, @@ -15,7 +15,12 @@ import { WorkerTypes, type WorkerUsage } from './worker.js' -import { checkWorkerNodeArguments, createWorker } from './utils.js' +import { + checkWorkerNodeArguments, + createWorker, + getWorkerId, + getWorkerType +} from './utils.js' /** * Worker node. @@ -61,7 +66,8 @@ export class WorkerNode if (this.info.type === WorkerTypes.thread) { this.messageChannel = new MessageChannel() } - this.tasksQueueBackPressureSize = opts.tasksQueueBackPressureSize + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.tasksQueueBackPressureSize = opts.tasksQueueBackPressureSize! this.tasksQueue = new Deque>() this.onBackPressureStarted = false this.taskFunctionsUsage = new Map() @@ -77,8 +83,7 @@ export class WorkerNode const tasksQueueSize = this.tasksQueue.push(task) if (this.hasBackPressure() && !this.onBackPressureStarted) { this.onBackPressureStarted = true - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - this.emit('backPressure', { workerId: this.info.id! }) + this.emit('backPressure', { workerId: this.info.id }) this.onBackPressureStarted = false } return tasksQueueSize @@ -89,8 +94,7 @@ export class WorkerNode const tasksQueueSize = this.tasksQueue.unshift(task) if (this.hasBackPressure() && !this.onBackPressureStarted) { this.onBackPressureStarted = true - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - this.emit('backPressure', { workerId: this.info.id! }) + this.emit('backPressure', { workerId: this.info.id }) this.onBackPressureStarted = false } return tasksQueueSize @@ -133,6 +137,7 @@ export class WorkerNode this.removeAllListeners() switch (this.info.type) { case WorkerTypes.thread: + this.worker.unref?.() await this.worker.terminate?.() break case WorkerTypes.cluster: