From fb41d7f7735b2e2b13874c11aeb55829f79f292f Mon Sep 17 00:00:00 2001 From: aardizio Date: Tue, 16 Feb 2021 12:17:25 +0100 Subject: [PATCH] TODO for shinigami --- src/utility-types.ts | 4 +++- src/worker/abstract-worker.ts | 7 ++++--- src/worker/worker-options.ts | 18 ++++++++++-------- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/utility-types.ts b/src/utility-types.ts index 8fb8130a..82dbb423 100644 --- a/src/utility-types.ts +++ b/src/utility-types.ts @@ -1,6 +1,7 @@ import type { Worker } from 'cluster' import type { MessagePort } from 'worker_threads' +export type KillBehavior = 'HARD' | 'SOFT' /** * Make all properties in T non-readonly */ @@ -42,7 +43,7 @@ export interface MessageValue< /** * Kill code. */ - readonly kill?: 'HARD' | 'SOFT' | number + readonly kill?: KillBehavior | number /** * Error. */ @@ -54,3 +55,4 @@ export interface MessageValue< */ readonly parent?: MainWorker } + diff --git a/src/worker/abstract-worker.ts b/src/worker/abstract-worker.ts index d57eacd7..bbf8f706 100644 --- a/src/worker/abstract-worker.ts +++ b/src/worker/abstract-worker.ts @@ -1,12 +1,13 @@ import { AsyncResource } from 'async_hooks' import type { Worker } from 'cluster' import type { MessagePort } from 'worker_threads' -import type { MessageValue } from '../utility-types' +import type { MessageValue, KillBehavior } from '../utility-types' import type { WorkerOptions } from './worker-options' import { killBehaviorEnumeration } from './worker-options' const defaultMaxInactiveTime = 1000 * 60 -const defaultKillBehavior = killBehaviorEnumeration.SOFT +// TODO Shinigami92 to fix this and avoid that SOFT/HARD words are replicated so much times into the project +const defaultKillBehavior: KillBehavior = 'SOFT' /** * Base class containing some shared logic for all poolifier workers. @@ -27,7 +28,7 @@ export abstract class AbstractWorker< /** * The kill behavior set as option on the Worker constructor or a default value. */ - protected readonly killBehavior: 'HARD' | 'SOFT' + protected readonly killBehavior: KillBehavior /** * Whether the worker is working asynchronously or not. */ diff --git a/src/worker/worker-options.ts b/src/worker/worker-options.ts index 3f1946d2..b1d13d0c 100644 --- a/src/worker/worker-options.ts +++ b/src/worker/worker-options.ts @@ -1,3 +1,5 @@ +import type { KillBehavior } from '../utility-types' + /** * Kill behavior enumeration */ @@ -14,9 +16,9 @@ export interface WorkerOptions { * Maximum waiting time in milliseconds for tasks. * After this time, newly created workers will be terminated. * The last active time of your worker unit will be updated when a task is submitted to a worker or when a worker terminate a task. - * If `killBehavior` is set to `HARD` this value represents also the timeout for the tasks that you submit to the pool, - * when this timeout expires your tasks is interrupted and the worker is killed if it is not part of the minimum size of the pool. - * If `killBehavior` is set to `SOFT` your tasks have no timeout and your workers will not be terminated until your task is finished. + * If killBehavior is set to HARD this value represents also the timeout for the tasks that you submit to the pool, + * when this timeout expires your tasks is interrupted and the worker is killed if is not part of the minimum size of the pool. + * If killBehavior is set to SOFT your tasks have no timeout and your workers will not be terminated until your task is * * @default 60.000 ms */ @@ -28,12 +30,12 @@ export interface WorkerOptions { */ async?: boolean /** - * `killBehavior` dictates if your async unit (worker/process) will be deleted in case that a task is active on it. - * SOFT: If current time - last active time is greater than `maxInactiveTime` option, but a task is still running then the worker will be not deleted. - * HARD: If last active time is greater than `maxInactiveTime` option, but a task is still running then the worker will be deleted. + * killBehavior dictates if your async unit ( worker/process ) will be deleted in case that a task is active on it. + * SOFT: If current time - last active time is greater than maxInactiveTime option, but a task is still running then the worker will be not deleted. + * HARD: If last active time is greater than maxInactiveTime option, but a task is still running then the worker will be deleted. * This option only apply to the newly created workers. * - * @default `'SOFT'` + * @default SOFT */ - killBehavior?: 'HARD' | 'SOFT' + killBehavior?: KillBehavior } -- 2.34.1