@alanszp/queue 20.4.2 → 20.4.4
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/dist/worker/worker.js
CHANGED
|
@@ -115,12 +115,27 @@ class Worker {
|
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
117
|
registerHooks() {
|
|
118
|
-
// on error: handle unhandled exceptions
|
|
118
|
+
// on error: handle unhandled exceptions. There is no job here, so there is
|
|
119
|
+
// no lifecycle to recover.
|
|
119
120
|
this.worker.on("error", (error) => this.processError(error));
|
|
120
|
-
// on completed:
|
|
121
|
-
|
|
122
|
-
//
|
|
123
|
-
|
|
121
|
+
// on completed/failed: BullMQ emits these events outside the process()
|
|
122
|
+
// context, so we re-establish the job lifecycle context (lid/lch from
|
|
123
|
+
// job.data) before handling them. This keeps the lifecycle in every log
|
|
124
|
+
// (and Slack notification) the same way it works inside process().
|
|
125
|
+
this.worker.on("completed", (job, result) => (0, withContext_1.runInJobContext)(this.queueFullName, this.getContext(), job, () => this.processCompleted(job, result)));
|
|
126
|
+
// BullMQ may emit "failed" with an undefined job (e.g. a stalled job
|
|
127
|
+
// removed by removeOnFail); there is no job.data to recover the lifecycle
|
|
128
|
+
// from, so we log without context.
|
|
129
|
+
this.worker.on("failed", (job, error) => {
|
|
130
|
+
if (!job) {
|
|
131
|
+
this.getLogger().error(`worker.job.failed.${(0, lodash_1.snakeCase)(this.queueFullName)}`, {
|
|
132
|
+
queue: this.queueFullName,
|
|
133
|
+
error,
|
|
134
|
+
});
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
return (0, withContext_1.runInJobContext)(this.queueFullName, this.getContext(), job, () => this.processFailed(job, error));
|
|
138
|
+
});
|
|
124
139
|
}
|
|
125
140
|
get worker() {
|
|
126
141
|
return this._worker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker/worker.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAmC;AAEnC,4DAAyD;AACzD,oCAMkB;AAGlB,
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker/worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Job, JobData } from "bullmq";
|
|
2
2
|
import { WorkerContext } from "../worker/worker";
|
|
3
3
|
import { JobReturnValue } from "../types";
|
|
4
|
+
export declare function runInJobContext<T = JobData, ReturnValue = void>(queueName: string, workerContext: WorkerContext, job: Job<T>, executor: () => Promise<ReturnValue>): Promise<ReturnValue>;
|
|
4
5
|
export declare function withContext<T = JobData, ReturnValue = JobReturnValue>(queueName: string, workerContext: WorkerContext, executor: (job: Job<T>) => Promise<ReturnValue>): (job: Job<T>) => Promise<ReturnValue>;
|
|
@@ -12,27 +12,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.runInJobContext = runInJobContext;
|
|
15
16
|
exports.withContext = withContext;
|
|
16
17
|
const cuid2_1 = require("@paralleldrive/cuid2");
|
|
17
18
|
const core_1 = require("@alanszp/core");
|
|
18
19
|
const newrelic_1 = __importDefault(require("newrelic"));
|
|
19
|
-
function
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
cid: context.contextId,
|
|
27
|
-
});
|
|
28
|
-
return executor(job);
|
|
29
|
-
}), {
|
|
30
|
-
logger: workerContext.baseLogger,
|
|
31
|
-
audit: workerContext.audit.withState(),
|
|
32
|
-
lifecycleId: lid || (0, cuid2_1.createId)(),
|
|
33
|
-
lifecycleChain: (0, core_1.concatLifecycleChain)(lch, `wkr:${queueName}:${(0, core_1.appEnv)()}`),
|
|
34
|
-
contextId: (0, cuid2_1.createId)(),
|
|
20
|
+
function runInJobContext(queueName, workerContext, job, executor) {
|
|
21
|
+
const { lid, lch } = job.data;
|
|
22
|
+
return workerContext.sharedContext.run((context) => __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
newrelic_1.default.addCustomAttributes({
|
|
24
|
+
lch: context.lifecycleChain,
|
|
25
|
+
lid: context.lifecycleId,
|
|
26
|
+
cid: context.contextId,
|
|
35
27
|
});
|
|
36
|
-
|
|
28
|
+
return executor();
|
|
29
|
+
}), {
|
|
30
|
+
logger: workerContext.baseLogger,
|
|
31
|
+
audit: workerContext.audit.withState(),
|
|
32
|
+
lifecycleId: lid || (0, cuid2_1.createId)(),
|
|
33
|
+
lifecycleChain: (0, core_1.concatLifecycleChain)(lch, `wkr:${queueName}:${(0, core_1.appEnv)()}`),
|
|
34
|
+
contextId: (0, cuid2_1.createId)(),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function withContext(queueName, workerContext, executor) {
|
|
38
|
+
return (job) => runInJobContext(queueName, workerContext, job, () => executor(job));
|
|
37
39
|
}
|
|
38
40
|
//# sourceMappingURL=withContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withContext.js","sourceRoot":"","sources":["../../src/wrappers/withContext.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"withContext.js","sourceRoot":"","sources":["../../src/wrappers/withContext.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAOA,0CAyBC;AAED,kCAOC;AAzCD,gDAAgD;AAChD,wCAA6D;AAI7D,wDAAgC;AAEhC,SAAgB,eAAe,CAC7B,SAAiB,EACjB,aAA4B,EAC5B,GAAW,EACX,QAAoC;IAEpC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,IAAsC,CAAC;IAChE,OAAO,aAAa,CAAC,aAAa,CAAC,GAAG,CACpC,CAAO,OAAO,EAAE,EAAE;QAChB,kBAAQ,CAAC,mBAAmB,CAAC;YAC3B,GAAG,EAAE,OAAO,CAAC,cAAc;YAC3B,GAAG,EAAE,OAAO,CAAC,WAAW;YACxB,GAAG,EAAE,OAAO,CAAC,SAAS;SACvB,CAAC,CAAC;QAEH,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC,CAAA,EACD;QACE,MAAM,EAAE,aAAa,CAAC,UAAU;QAChC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE;QACtC,WAAW,EAAE,GAAG,IAAI,IAAA,gBAAQ,GAAE;QAC9B,cAAc,EAAE,IAAA,2BAAoB,EAAC,GAAG,EAAE,OAAO,SAAS,IAAI,IAAA,aAAM,GAAE,EAAE,CAAC;QACzE,SAAS,EAAE,IAAA,gBAAQ,GAAE;KACtB,CACF,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CACzB,SAAiB,EACjB,aAA4B,EAC5B,QAA+C;IAE/C,OAAO,CAAC,GAAG,EAAE,EAAE,CACb,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alanszp/queue",
|
|
3
|
-
"version": "20.4.
|
|
3
|
+
"version": "20.4.4",
|
|
4
4
|
"description": "Workers and queues",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"yalc-publish": "pnpm run yalc publish"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@alanszp/audit": "^20.4.
|
|
20
|
-
"@alanszp/logger": "^20.4.
|
|
21
|
-
"@alanszp/shared-context": "^20.4.
|
|
19
|
+
"@alanszp/audit": "^20.4.4",
|
|
20
|
+
"@alanszp/logger": "^20.4.4",
|
|
21
|
+
"@alanszp/shared-context": "^20.4.4",
|
|
22
22
|
"@types/jest": "^29.5.12",
|
|
23
23
|
"@types/newrelic": "^9.14.4",
|
|
24
24
|
"@types/node": "^24.0.0",
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
"typescript": "^5.9.3"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@alanszp/core": "^20.4.
|
|
32
|
-
"@alanszp/errors": "^20.4.
|
|
33
|
-
"@alanszp/validations": "^20.4.
|
|
31
|
+
"@alanszp/core": "^20.4.4",
|
|
32
|
+
"@alanszp/errors": "^20.4.4",
|
|
33
|
+
"@alanszp/validations": "^20.4.4",
|
|
34
34
|
"@paralleldrive/cuid2": "^2.2.2",
|
|
35
35
|
"bullmq": "^5.76.6",
|
|
36
36
|
"ioredis": "^5.9.3",
|
|
37
37
|
"lodash": "^4.17.23",
|
|
38
38
|
"newrelic": "^13.17.0"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "113b57dc0fa86390b1b9ea9bdd9bc219825544f4"
|
|
41
41
|
}
|