nestworker 2.1.6 → 2.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +684 -648
- package/dist/core/worker.interfaces.d.ts +38 -3
- package/dist/core/worker.module.js.map +1 -1
- package/dist/core/worker.pool.d.ts +52 -15
- package/dist/core/worker.pool.js +373 -216
- package/dist/core/worker.pool.js.map +1 -1
- package/dist/core/worker.service.d.ts +37 -3
- package/dist/core/worker.service.js +88 -16
- package/dist/core/worker.service.js.map +1 -1
- package/dist/di/di-serializer.js +24 -15
- package/dist/di/di-serializer.js.map +1 -1
- package/dist/di/worker-container.d.ts +24 -5
- package/dist/di/worker-container.js +70 -30
- package/dist/di/worker-container.js.map +1 -1
- package/dist/discovery/discovery.service.js +6 -15
- package/dist/discovery/discovery.service.js.map +1 -1
- package/dist/example/bench.js +8 -2
- package/dist/example/bench.js.map +1 -1
- package/dist/example/image.service.d.ts +8 -0
- package/dist/example/image.service.js +31 -0
- package/dist/example/image.service.js.map +1 -1
- package/dist/example/main.js +10 -2
- package/dist/example/main.js.map +1 -1
- package/dist/health/worker.health.js +3 -1
- package/dist/health/worker.health.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/metrics/worker.metrics.js +6 -1
- package/dist/metrics/worker.metrics.js.map +1 -1
- package/dist/worker/worker-runtime.js +81 -73
- package/dist/worker/worker-runtime.js.map +1 -1
- package/package.json +85 -82
|
@@ -97,6 +97,18 @@ class WorkerContainer {
|
|
|
97
97
|
* live in the same compiled output (monorepo barrel files, etc.).
|
|
98
98
|
*/
|
|
99
99
|
fileCache = new Map();
|
|
100
|
+
/**
|
|
101
|
+
* Shared vm.Context for ALL files loaded by this container instance.
|
|
102
|
+
* Creating a fresh context per file is ~ms-scale on every cold path and
|
|
103
|
+
* compounds badly with monorepo apps that load many files; one shared
|
|
104
|
+
* context keeps decorator-stubbing semantics intact while collapsing the
|
|
105
|
+
* cold-start cost to a single `vm.createContext` call per worker.
|
|
106
|
+
*
|
|
107
|
+
* Per-file bindings (`require`, `module`, `exports`, `__filename`,
|
|
108
|
+
* `__dirname`) are injected just-in-time by running the file inside a
|
|
109
|
+
* thin CommonJS wrapper inside this same context.
|
|
110
|
+
*/
|
|
111
|
+
sharedContext;
|
|
100
112
|
load(services) {
|
|
101
113
|
for (const svc of services) {
|
|
102
114
|
// Reconstruct each dep from its compiled file + snapshot
|
|
@@ -108,6 +120,11 @@ class WorkerContainer {
|
|
|
108
120
|
}
|
|
109
121
|
// Allocate the service without calling its constructor — deps are
|
|
110
122
|
// assigned by property key so constructor slot order never matters.
|
|
123
|
+
//
|
|
124
|
+
// NOTE on snapshot fidelity: snapshotInstance only copies own enumerable
|
|
125
|
+
// values (no getters/setters). Deps that rely on prototype-defined
|
|
126
|
+
// accessors will see plain-value fallbacks in the worker. Document this
|
|
127
|
+
// when introducing deps with accessor-based public surface.
|
|
111
128
|
const ServiceClass = this.loadClass(svc.filePath, svc.name);
|
|
112
129
|
const serviceInstance = Object.create(ServiceClass.prototype);
|
|
113
130
|
for (const [key, inst] of depsByKey) {
|
|
@@ -129,10 +146,11 @@ class WorkerContainer {
|
|
|
129
146
|
return instance;
|
|
130
147
|
}
|
|
131
148
|
/**
|
|
132
|
-
* Load a named export from a compiled .js file by running it in
|
|
133
|
-
* context. The context's
|
|
134
|
-
* at file-eval time are silent
|
|
135
|
-
* normally through
|
|
149
|
+
* Load a named export from a compiled .js file by running it in the
|
|
150
|
+
* shared vm context. The context's globals include a `require` shim that
|
|
151
|
+
* stubs NestJS packages so decorator calls at file-eval time are silent
|
|
152
|
+
* no-ops, while all other imports resolve normally through Node's real
|
|
153
|
+
* module system.
|
|
136
154
|
*/
|
|
137
155
|
loadClass(filePath, className) {
|
|
138
156
|
const exports = this.runFile(filePath);
|
|
@@ -143,49 +161,71 @@ class WorkerContainer {
|
|
|
143
161
|
}
|
|
144
162
|
return cls;
|
|
145
163
|
}
|
|
146
|
-
/**
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
runFile(filePath) {
|
|
151
|
-
const cached = this.fileCache.get(filePath);
|
|
152
|
-
if (cached)
|
|
153
|
-
return cached;
|
|
154
|
-
const source = node_fs_1.default.readFileSync(filePath, 'utf8');
|
|
155
|
-
const mod = { exports: {} };
|
|
156
|
-
// Insert into cache before execution so circular local requires can see a
|
|
157
|
-
// partial export object instead of recursing forever.
|
|
158
|
-
this.fileCache.set(filePath, mod.exports);
|
|
159
|
-
const sandboxRequire = this.createSandboxRequire(filePath);
|
|
164
|
+
/** Lazy-init the shared context. */
|
|
165
|
+
getSharedContext() {
|
|
166
|
+
if (this.sharedContext)
|
|
167
|
+
return this.sharedContext;
|
|
160
168
|
const context = node_vm_1.default.createContext({
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
__filename: filePath,
|
|
165
|
-
__dirname: node_path_1.default.dirname(filePath),
|
|
166
|
-
// Standard globals the compiled output may reference
|
|
169
|
+
// Per-file bindings are injected via the CJS wrapper below; we keep
|
|
170
|
+
// these on the context so files referencing `console`, `process`,
|
|
171
|
+
// `Buffer`, etc. via the global resolve cheaply.
|
|
167
172
|
console,
|
|
168
173
|
process,
|
|
169
174
|
Buffer,
|
|
170
175
|
URL,
|
|
171
176
|
URLSearchParams,
|
|
172
177
|
fetch,
|
|
178
|
+
// AbortController/AbortSignal are referenced by emitted TS metadata
|
|
179
|
+
// (`__metadata("design:paramtypes", [..., AbortSignal])`) whenever a
|
|
180
|
+
// @WorkerTask method declares an `AbortSignal` parameter. Missing them
|
|
181
|
+
// here throws `ReferenceError: AbortSignal is not defined` at file
|
|
182
|
+
// eval time, before any task can run.
|
|
183
|
+
AbortController,
|
|
184
|
+
AbortSignal,
|
|
185
|
+
Event,
|
|
186
|
+
EventTarget,
|
|
173
187
|
setTimeout,
|
|
174
188
|
clearTimeout,
|
|
175
189
|
setInterval,
|
|
176
190
|
clearInterval,
|
|
177
191
|
setImmediate,
|
|
178
192
|
clearImmediate,
|
|
193
|
+
queueMicrotask,
|
|
179
194
|
Promise,
|
|
180
195
|
Reflect: createReflectShim(),
|
|
181
|
-
|
|
182
|
-
// `(this && this.__importStar)` patterns resolve to the context global
|
|
183
|
-
// rather than to undefined (as they would in new Function()).
|
|
184
|
-
global: undefined, // set below after createContext
|
|
196
|
+
global: undefined,
|
|
185
197
|
});
|
|
186
|
-
// Wire global → context so self-referential global patterns work
|
|
187
198
|
context.global = context;
|
|
188
|
-
|
|
199
|
+
this.sharedContext = context;
|
|
200
|
+
return context;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Execute a compiled .js file in the shared vm context and return its
|
|
204
|
+
* module.exports. Results are cached by file path.
|
|
205
|
+
*
|
|
206
|
+
* Files are wrapped in a CommonJS-style function so per-file bindings
|
|
207
|
+
* (`require`, `module`, `exports`, `__filename`, `__dirname`) don't leak
|
|
208
|
+
* into the shared context global between files.
|
|
209
|
+
*/
|
|
210
|
+
runFile(filePath) {
|
|
211
|
+
const cached = this.fileCache.get(filePath);
|
|
212
|
+
if (cached)
|
|
213
|
+
return cached;
|
|
214
|
+
const source = node_fs_1.default.readFileSync(filePath, 'utf8');
|
|
215
|
+
const mod = { exports: {} };
|
|
216
|
+
// Insert into cache before execution so circular local requires can see a
|
|
217
|
+
// partial export object instead of recursing forever.
|
|
218
|
+
this.fileCache.set(filePath, mod.exports);
|
|
219
|
+
const sandboxRequire = this.createSandboxRequire(filePath);
|
|
220
|
+
const context = this.getSharedContext();
|
|
221
|
+
// Wrap the file in a CJS-style function — same shape as Node's loader,
|
|
222
|
+
// but compiled once into our shared context. This keeps per-file
|
|
223
|
+
// bindings hermetic without paying for a fresh vm.createContext.
|
|
224
|
+
const wrapped = '(function (exports, require, module, __filename, __dirname) { ' +
|
|
225
|
+
source +
|
|
226
|
+
'\n})';
|
|
227
|
+
const fn = node_vm_1.default.runInContext(wrapped, context, { filename: filePath });
|
|
228
|
+
fn(mod.exports, sandboxRequire, mod, filePath, node_path_1.default.dirname(filePath));
|
|
189
229
|
this.fileCache.set(filePath, mod.exports);
|
|
190
230
|
return mod.exports;
|
|
191
231
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-container.js","sourceRoot":"","sources":["../../src/di/worker-container.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;;;;AAEH,sDAAyB;AACzB,0DAAiC;AACjC,8DAAqC;AACrC,sDAAyB;AAwBzB;;;;;;;;;;;;;GAaG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,gBAAgB;IAChB,cAAc;IACd,uBAAuB;IACvB,0BAA0B;IAC1B,0BAA0B;IAC1B,kBAAkB;IAClB,YAAY;CACb,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,EAAU;IAClC,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,iEAAiE;IACjE,mCAAmC;IACnC,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3E,4DAA4D;IAC5D,qDAAqD;IACrD,IAAI,mBAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,OAAO,CACL,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACpC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACvC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAC9C,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,SAAS,GAAY,IAAI,KAAK;AAClC,gEAAgE;AAChE,cAAa,CAAC,EACd;IACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS;IAC1B,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACzB,wEAAwE;QACxE,8DAA8D;QAC9D,MAAM,KAAK,GAAI,IAAkB,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IACD,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;CACrC,CACF,CAAC;AAEF,6EAA6E;AAE7E,MAAa,eAAe;IACT,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IAExD;;;;OAIG;IACc,SAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IAExE,IAAI,CAAC,QAA6B;QAChC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,yDAAyD;YACzD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;YAC7C,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"worker-container.js","sourceRoot":"","sources":["../../src/di/worker-container.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,21 +88,12 @@ let WorkerDiscoveryService = WorkerDiscoveryService_1 = class WorkerDiscoverySer
|
|
|
88
88
|
if (!options)
|
|
89
89
|
continue;
|
|
90
90
|
tasksFound++;
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const fn = options.retryDelay;
|
|
98
|
-
retryDelay = Math.round((fn(1) + fn(2) + fn(3)) / 3);
|
|
99
|
-
this.logger.warn(`${serviceName}.${methodName}: retryDelay as a function is not supported ` +
|
|
100
|
-
`across thread boundaries. Computed average: ${retryDelay}ms. ` +
|
|
101
|
-
`Pass a number for precise control.`);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
retryDelay = options.retryDelay;
|
|
105
|
-
}
|
|
91
|
+
// retryDelay stays as-is — both numeric and function forms are
|
|
92
|
+
// resolved on the main thread (in WorkerPool.handleFailure), so the
|
|
93
|
+
// function never has to cross the worker boundary. Earlier versions
|
|
94
|
+
// pre-averaged the function which silently dropped attempt-dependent
|
|
95
|
+
// backoff (e.g. `(n) => n * 1000`).
|
|
96
|
+
const retryDelay = options.retryDelay;
|
|
106
97
|
const fn = instance[methodName].bind(instance);
|
|
107
98
|
this.discovered.push({
|
|
108
99
|
serviceName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.service.js","sourceRoot":"","sources":["../../src/discovery/discovery.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,uCAA2D;AAE3D,+EAM6C;AAItC,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAMd;IACA;IANF,MAAM,GAAG,IAAI,eAAM,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,GAAG,KAAK,CAAC;IAChB,UAAU,GAAqB,EAAE,CAAC;IAE1C,YACmB,gBAAkC,EAClC,SAAoB;QADpB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ,IAAI;QACF,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;gBAChD,IAAI,CAAC,cAAc,CAAC,OAA0B,CAAC,CAAC;YAClD,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClD,IAAI,CAAC,cAAc,CAAC,OAA0B,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,uEAAuE;gBACrE,mEAAmE,CACtE,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEO,cAAc,CAAC,OAAwB;QAC7C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACvC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;YAAE,OAAO;QACnC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,yCAAiB,EAAE,QAAQ,CAAC;YAAE,OAAO;QAE9D,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAoC,CAAC;QAE5D,yEAAyE;QACzE,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,wCAAgB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QAExD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"discovery.service.js","sourceRoot":"","sources":["../../src/discovery/discovery.service.ts"],"names":[],"mappings":"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"}
|
package/dist/example/bench.js
CHANGED
|
@@ -40,7 +40,11 @@ let BenchModule = class BenchModule {
|
|
|
40
40
|
BenchModule = __decorate([
|
|
41
41
|
(0, common_1.Module)({
|
|
42
42
|
imports: [
|
|
43
|
-
worker_module_1.WorkerModule.forRoot({
|
|
43
|
+
worker_module_1.WorkerModule.forRoot({
|
|
44
|
+
poolSize: POOL,
|
|
45
|
+
concurrency: CONCURRENCY,
|
|
46
|
+
shutdownTimeout: 5_000,
|
|
47
|
+
}),
|
|
44
48
|
],
|
|
45
49
|
providers: [config_service_1.ConfigService, image_service_1.ImageService],
|
|
46
50
|
})
|
|
@@ -54,7 +58,9 @@ function pct(sorted, p) {
|
|
|
54
58
|
async function run() {
|
|
55
59
|
console.log(`▶ bench: tasks=${TASKS} pool=${POOL} concurrency=${CONCURRENCY} method=${METHOD} warmup=${WARMUP}`);
|
|
56
60
|
const t0 = node_perf_hooks_1.performance.now();
|
|
57
|
-
const app = await core_1.NestFactory.createApplicationContext(BenchModule, {
|
|
61
|
+
const app = await core_1.NestFactory.createApplicationContext(BenchModule, {
|
|
62
|
+
logger: false,
|
|
63
|
+
});
|
|
58
64
|
const ws = app.get(worker_service_1.WorkerService);
|
|
59
65
|
// Cold-start: first task forces pool readiness.
|
|
60
66
|
await ws.run('ImageService', METHOD);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bench.js","sourceRoot":"","sources":["../../src/example/bench.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA;;;;;;;;;;;GAWG;AACH,4BAA0B;AAC1B,uCAA2C;AAC3C,2CAAwC;AACxC,sDAAyB;AACzB,qDAA8C;AAC9C,yDAAqD;AACrD,2DAAuD;AACvD,qDAAiD;AACjD,mDAA+C;AAE/C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;AACjD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,iBAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;AAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;AACjD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;AACzD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"bench.js","sourceRoot":"","sources":["../../src/example/bench.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,4 +12,12 @@ export declare class ImageService {
|
|
|
12
12
|
p: number;
|
|
13
13
|
f: number;
|
|
14
14
|
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Sleep `ms` then return — used by tests for timeout/abort scenarios.
|
|
17
|
+
* Accepts an optional AbortSignal as the last arg (auto-injected by the
|
|
18
|
+
* pool when the caller passes `{ signal }`).
|
|
19
|
+
*/
|
|
20
|
+
sleep(ms: number, signal?: AbortSignal): Promise<string>;
|
|
21
|
+
/** Always throws — used to exercise retry / dead-letter paths. */
|
|
22
|
+
alwaysFail(): never;
|
|
15
23
|
}
|
|
@@ -87,6 +87,25 @@ let ImageService = class ImageService {
|
|
|
87
87
|
const f = (await fetch('https://api.github.com')).status;
|
|
88
88
|
return { p: p.length, f };
|
|
89
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Sleep `ms` then return — used by tests for timeout/abort scenarios.
|
|
92
|
+
* Accepts an optional AbortSignal as the last arg (auto-injected by the
|
|
93
|
+
* pool when the caller passes `{ signal }`).
|
|
94
|
+
*/
|
|
95
|
+
async sleep(ms, signal) {
|
|
96
|
+
await new Promise((resolve, reject) => {
|
|
97
|
+
const t = setTimeout(resolve, ms);
|
|
98
|
+
signal?.addEventListener('abort', () => {
|
|
99
|
+
clearTimeout(t);
|
|
100
|
+
reject(new Error('aborted'));
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
return `slept ${ms}ms`;
|
|
104
|
+
}
|
|
105
|
+
/** Always throws — used to exercise retry / dead-letter paths. */
|
|
106
|
+
alwaysFail() {
|
|
107
|
+
throw new Error('boom');
|
|
108
|
+
}
|
|
90
109
|
};
|
|
91
110
|
exports.ImageService = ImageService;
|
|
92
111
|
__decorate([
|
|
@@ -125,6 +144,18 @@ __decorate([
|
|
|
125
144
|
__metadata("design:paramtypes", []),
|
|
126
145
|
__metadata("design:returntype", Promise)
|
|
127
146
|
], ImageService.prototype, "outlineModule", null);
|
|
147
|
+
__decorate([
|
|
148
|
+
(0, worker_task_decorator_1.WorkerTask)(),
|
|
149
|
+
__metadata("design:type", Function),
|
|
150
|
+
__metadata("design:paramtypes", [Number, AbortSignal]),
|
|
151
|
+
__metadata("design:returntype", Promise)
|
|
152
|
+
], ImageService.prototype, "sleep", null);
|
|
153
|
+
__decorate([
|
|
154
|
+
(0, worker_task_decorator_1.WorkerTask)({ retry: 0 }),
|
|
155
|
+
__metadata("design:type", Function),
|
|
156
|
+
__metadata("design:paramtypes", []),
|
|
157
|
+
__metadata("design:returntype", void 0)
|
|
158
|
+
], ImageService.prototype, "alwaysFail", null);
|
|
128
159
|
exports.ImageService = ImageService = __decorate([
|
|
129
160
|
(0, common_1.Injectable)(),
|
|
130
161
|
(0, worker_task_decorator_1.WorkerClass)({ deps: [config_service_1.ConfigService] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.service.js","sourceRoot":"","sources":["../../src/example/image.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,+EAA8E;AAC9E,qDAAiD;AACjD,2DAA6B;AAItB,IAAM,YAAY,GAAlB,MAAM,YAAY;IACM;IAA7B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAG7D,WAAW,CAAC,KAAa;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC9D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE;YAAE,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,UAAU,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,iBAAiB,CAAC,KAAa,EAAE,MAAc;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC9D,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1E,OAAO,SAAS,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,OAAO,CAAC;IAC9D,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY;QAChB,MAAM,EAAE,GAAG,wDAAa,SAAS,GAAC,CAAC;QACnC,OAAO,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAC9C,CAAC;IAGK,AAAN,KAAK,CAAC,aAAa;QACjB,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9B,OAAO,mBAAmB,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAC/C,CAAC;IAED,8DAA8D;IAE9D,IAAI;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAGK,AAAN,KAAK,CAAC,aAAa;QACjB,MAAM,CAAC,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,MAAM,CAAC;QACzD,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IAC5B,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"image.service.js","sourceRoot":"","sources":["../../src/example/image.service.ts"],"names":[],"mappings":"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"}
|
package/dist/example/main.js
CHANGED
|
@@ -17,7 +17,13 @@ let AppModule = class AppModule {
|
|
|
17
17
|
};
|
|
18
18
|
AppModule = __decorate([
|
|
19
19
|
(0, common_1.Module)({
|
|
20
|
-
imports: [
|
|
20
|
+
imports: [
|
|
21
|
+
worker_module_1.WorkerModule.forRoot({
|
|
22
|
+
poolSize: 16,
|
|
23
|
+
shutdownTimeout: 10000,
|
|
24
|
+
concurrency: 1,
|
|
25
|
+
}),
|
|
26
|
+
],
|
|
21
27
|
providers: [config_service_1.ConfigService, image_service_1.ImageService],
|
|
22
28
|
})
|
|
23
29
|
], AppModule);
|
|
@@ -58,7 +64,9 @@ async function bootstrap() {
|
|
|
58
64
|
console.log('\n▶ concurrent x4 [all 4 workers busy simultaneously]');
|
|
59
65
|
console.time('concurrent');
|
|
60
66
|
const results = await Promise.allSettled([
|
|
61
|
-
workerService.run('ImageService', 'resizeImage', [1], {
|
|
67
|
+
workerService.run('ImageService', 'resizeImage', [1], {
|
|
68
|
+
priority: 'LOW',
|
|
69
|
+
}),
|
|
62
70
|
workerService.run('ImageService', 'resizeImage', [2], {
|
|
63
71
|
priority: 'LOW',
|
|
64
72
|
timeout: 1000,
|
package/dist/example/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/example/main.ts"],"names":[],"mappings":";;;;;;;;AAAA,4BAA0B;AAC1B,uCAA2C;AAC3C,2CAAwC;AACxC,yDAAqD;AACrD,2DAAuD;AACvD,qDAAiD;AACjD,mDAA+C;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/example/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,7 +56,9 @@ let WorkerHealthIndicator = class WorkerHealthIndicator {
|
|
|
56
56
|
? { error: `${stats.warmingUp} worker(s) still warming up` }
|
|
57
57
|
: {}),
|
|
58
58
|
...(isDown && stats.queued > stats.poolSize
|
|
59
|
-
? {
|
|
59
|
+
? {
|
|
60
|
+
error: `Queue depth (${stats.queued}) exceeds pool size (${stats.poolSize})`,
|
|
61
|
+
}
|
|
60
62
|
: {}),
|
|
61
63
|
};
|
|
62
64
|
if (isDown) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.health.js","sourceRoot":"","sources":["../../src/health/worker.health.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2DAAuD;AAcvD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACH;IAA7B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAE7D;;;;OAIG;IACH,KAAK,CAAC,GAAW;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEpE,MAAM,MAAM,GAAuB;YACjC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC9B,OAAO,EAAE,KAAK;YACd,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC;gBAC/B,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,6BAA6B,EAAE;gBAC5D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ;gBACzC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"worker.health.js","sourceRoot":"","sources":["../../src/health/worker.health.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2DAAuD;AAcvD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACH;IAA7B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAE7D;;;;OAIG;IACH,KAAK,CAAC,GAAW;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEpE,MAAM,MAAM,GAAuB;YACjC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC9B,OAAO,EAAE,KAAK;YACd,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC;gBAC/B,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,6BAA6B,EAAE;gBAC5D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ;gBACzC,CAAC,CAAC;oBACE,KAAK,EAAE,gBAAgB,KAAK,CAAC,MAAM,wBAAwB,KAAK,CAAC,QAAQ,GAAG;iBAC7E;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,EAAE;gBACtD,CAAC,GAAG,CAAC,EAAE,MAAM;gBACb,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;aACvB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AAlCY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;qCAEiC,8BAAa;GAD9C,qBAAqB,CAkCjC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export { WorkerModule } from './core/worker.module';
|
|
2
2
|
export { WorkerService } from './core/worker.service';
|
|
3
|
-
export type { RunOptions } from './core/worker.service';
|
|
3
|
+
export type { RunOptions, WorkerInvocation } from './core/worker.service';
|
|
4
|
+
export { QueueFullError } from './core/worker.pool';
|
|
4
5
|
export { WorkerClass, WorkerTask } from './decorators/worker-task.decorator';
|
|
5
6
|
export type { WorkerTaskOptions } from './decorators/worker-task.decorator';
|
|
6
7
|
export { WorkerHealthIndicator } from './health/worker.health';
|
|
7
8
|
export type { WorkerHealthResult } from './health/worker.health';
|
|
8
9
|
export { WorkerMetricsService } from './metrics/worker.metrics';
|
|
9
10
|
export type { WorkerMetricsSnapshot } from './metrics/worker.metrics';
|
|
10
|
-
export type { WorkerJob, WorkerModuleOptions, WorkerModuleAsyncOptions, TaskPriority, DeadLetterEvent, PoolStats, SerializedError, } from './core/worker.interfaces';
|
|
11
|
+
export type { WorkerJob, WorkerModuleOptions, WorkerModuleAsyncOptions, WorkerLogger, TaskPriority, DeadLetterEvent, PoolStats, SerializedError, } from './core/worker.interfaces';
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WorkerMetricsService = exports.WorkerHealthIndicator = exports.WorkerTask = exports.WorkerClass = exports.WorkerService = exports.WorkerModule = void 0;
|
|
3
|
+
exports.WorkerMetricsService = exports.WorkerHealthIndicator = exports.WorkerTask = exports.WorkerClass = exports.QueueFullError = exports.WorkerService = exports.WorkerModule = void 0;
|
|
4
4
|
// Module
|
|
5
5
|
var worker_module_1 = require("./core/worker.module");
|
|
6
6
|
Object.defineProperty(exports, "WorkerModule", { enumerable: true, get: function () { return worker_module_1.WorkerModule; } });
|
|
7
7
|
// Services
|
|
8
8
|
var worker_service_1 = require("./core/worker.service");
|
|
9
9
|
Object.defineProperty(exports, "WorkerService", { enumerable: true, get: function () { return worker_service_1.WorkerService; } });
|
|
10
|
+
var worker_pool_1 = require("./core/worker.pool");
|
|
11
|
+
Object.defineProperty(exports, "QueueFullError", { enumerable: true, get: function () { return worker_pool_1.QueueFullError; } });
|
|
10
12
|
// Decorators
|
|
11
13
|
var worker_task_decorator_1 = require("./decorators/worker-task.decorator");
|
|
12
14
|
Object.defineProperty(exports, "WorkerClass", { enumerable: true, get: function () { return worker_task_decorator_1.WorkerClass; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,SAAS;AACT,sDAAoD;AAA3C,6GAAA,YAAY,OAAA;AAErB,WAAW;AACX,wDAAsD;AAA7C,+GAAA,aAAa,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,SAAS;AACT,sDAAoD;AAA3C,6GAAA,YAAY,OAAA;AAErB,WAAW;AACX,wDAAsD;AAA7C,+GAAA,aAAa,OAAA;AAEtB,kDAAoD;AAA3C,6GAAA,cAAc,OAAA;AAEvB,aAAa;AACb,4EAA6E;AAApE,oHAAA,WAAW,OAAA;AAAE,mHAAA,UAAU,OAAA;AAGhC,SAAS;AACT,wDAA+D;AAAtD,sHAAA,qBAAqB,OAAA;AAG9B,UAAU;AACV,2DAAgE;AAAvD,sHAAA,oBAAoB,OAAA"}
|
|
@@ -91,7 +91,12 @@ let WorkerMetricsService = class WorkerMetricsService {
|
|
|
91
91
|
}
|
|
92
92
|
/** Reset all counters (useful in tests) */
|
|
93
93
|
reset() {
|
|
94
|
-
this.jobsTotal =
|
|
94
|
+
this.jobsTotal =
|
|
95
|
+
this.jobsSuccess =
|
|
96
|
+
this.jobsFailed =
|
|
97
|
+
this.jobsTimeout =
|
|
98
|
+
this.jobsDead =
|
|
99
|
+
0;
|
|
95
100
|
this.durationSamples.clear();
|
|
96
101
|
}
|
|
97
102
|
pushDuration(key, ms) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.metrics.js","sourceRoot":"","sources":["../../src/metrics/worker.metrics.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA2E;AAC3E,2DAAuD;
|
|
1
|
+
{"version":3,"file":"worker.metrics.js","sourceRoot":"","sources":["../../src/metrics/worker.metrics.ts"],"names":[],"mappings":"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"}
|