bullmq 5.21.2 → 5.23.0
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 +21 -21
- package/dist/cjs/classes/flow-producer.js +1 -0
- package/dist/cjs/classes/flow-producer.js.map +1 -1
- package/dist/cjs/classes/job-scheduler.js +14 -0
- package/dist/cjs/classes/job-scheduler.js.map +1 -1
- package/dist/cjs/classes/job.js +61 -41
- package/dist/cjs/classes/job.js.map +1 -1
- package/dist/cjs/classes/queue-base.js +54 -0
- package/dist/cjs/classes/queue-base.js.map +1 -1
- package/dist/cjs/classes/queue-events.js.map +1 -1
- package/dist/cjs/classes/queue.js +172 -76
- package/dist/cjs/classes/queue.js.map +1 -1
- package/dist/cjs/classes/worker.js +232 -128
- package/dist/cjs/classes/worker.js.map +1 -1
- package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +2 -2
- package/dist/cjs/commands/includes/removeDeduplicationKeyIfNeeded.lua +14 -0
- package/dist/cjs/commands/moveStalledJobsToWait-9.lua +3 -3
- package/dist/cjs/commands/moveToFinished-14.lua +2 -2
- package/dist/cjs/commands/updateJobOption-1.lua +26 -0
- package/dist/cjs/enums/index.js +1 -0
- package/dist/cjs/enums/index.js.map +1 -1
- package/dist/cjs/enums/telemetry-attributes.js +45 -0
- package/dist/cjs/enums/telemetry-attributes.js.map +1 -0
- package/dist/cjs/interfaces/index.js +1 -0
- package/dist/cjs/interfaces/index.js.map +1 -1
- package/dist/cjs/interfaces/queue-options.js.map +1 -1
- package/dist/cjs/interfaces/telemetry.js +3 -0
- package/dist/cjs/interfaces/telemetry.js.map +1 -0
- package/dist/cjs/scripts/index.js +1 -0
- package/dist/cjs/scripts/index.js.map +1 -1
- package/dist/cjs/scripts/moveStalledJobsToWait-9.js +9 -9
- package/dist/cjs/scripts/moveToFinished-14.js +8 -8
- package/dist/cjs/scripts/updateJobOption-1.js +30 -0
- package/dist/cjs/scripts/updateJobOption-1.js.map +1 -0
- package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/classes/flow-producer.js +1 -0
- package/dist/esm/classes/flow-producer.js.map +1 -1
- package/dist/esm/classes/job-scheduler.d.ts +2 -1
- package/dist/esm/classes/job-scheduler.js +14 -0
- package/dist/esm/classes/job-scheduler.js.map +1 -1
- package/dist/esm/classes/job.d.ts +2 -0
- package/dist/esm/classes/job.js +61 -41
- package/dist/esm/classes/job.js.map +1 -1
- package/dist/esm/classes/queue-base.d.ts +19 -1
- package/dist/esm/classes/queue-base.js +54 -0
- package/dist/esm/classes/queue-base.js.map +1 -1
- package/dist/esm/classes/queue-events.js.map +1 -1
- package/dist/esm/classes/queue.d.ts +6 -0
- package/dist/esm/classes/queue.js +172 -76
- package/dist/esm/classes/queue.js.map +1 -1
- package/dist/esm/classes/worker.d.ts +2 -1
- package/dist/esm/classes/worker.js +232 -128
- package/dist/esm/classes/worker.js.map +1 -1
- package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +2 -2
- package/dist/esm/commands/includes/removeDeduplicationKeyIfNeeded.lua +14 -0
- package/dist/esm/commands/moveStalledJobsToWait-9.lua +3 -3
- package/dist/esm/commands/moveToFinished-14.lua +2 -2
- package/dist/esm/commands/updateJobOption-1.lua +26 -0
- package/dist/esm/enums/index.d.ts +1 -0
- package/dist/esm/enums/index.js +1 -0
- package/dist/esm/enums/index.js.map +1 -1
- package/dist/esm/enums/telemetry-attributes.d.ts +39 -0
- package/dist/esm/enums/telemetry-attributes.js +42 -0
- package/dist/esm/enums/telemetry-attributes.js.map +1 -0
- package/dist/esm/interfaces/base-job-options.d.ts +4 -0
- package/dist/esm/interfaces/index.d.ts +1 -0
- package/dist/esm/interfaces/index.js +1 -0
- package/dist/esm/interfaces/index.js.map +1 -1
- package/dist/esm/interfaces/queue-options.d.ts +9 -0
- package/dist/esm/interfaces/queue-options.js.map +1 -1
- package/dist/esm/interfaces/repeatable-job.d.ts +1 -1
- package/dist/esm/interfaces/telemetry.d.ts +150 -0
- package/dist/esm/interfaces/telemetry.js +2 -0
- package/dist/esm/interfaces/telemetry.js.map +1 -0
- package/dist/esm/interfaces/worker-options.d.ts +13 -0
- package/dist/esm/scripts/index.d.ts +1 -0
- package/dist/esm/scripts/index.js +1 -0
- package/dist/esm/scripts/index.js.map +1 -1
- package/dist/esm/scripts/moveStalledJobsToWait-9.js +9 -9
- package/dist/esm/scripts/moveToFinished-14.js +8 -8
- package/dist/esm/scripts/updateJobOption-1.d.ts +5 -0
- package/dist/esm/scripts/updateJobOption-1.js +27 -0
- package/dist/esm/scripts/updateJobOption-1.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/types/job-options.d.ts +4 -0
- package/dist/esm/types/minimal-queue.d.ts +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +2 -2
- package/dist/cjs/commands/includes/removeDebounceKeyIfNeeded.lua +0 -14
- package/dist/esm/commands/includes/removeDebounceKeyIfNeeded.lua +0 -14
@@ -65,7 +65,7 @@ local rcall = redis.call
|
|
65
65
|
--- @include "includes/moveParentToWaitIfNeeded"
|
66
66
|
--- @include "includes/prepareJobForProcessing"
|
67
67
|
--- @include "includes/promoteDelayedJobs"
|
68
|
-
--- @include "includes/
|
68
|
+
--- @include "includes/removeDeduplicationKeyIfNeeded"
|
69
69
|
--- @include "includes/removeJobKeys"
|
70
70
|
--- @include "includes/removeJobsByMaxAge"
|
71
71
|
--- @include "includes/removeJobsByMaxCount"
|
@@ -119,7 +119,7 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
|
|
119
119
|
|
120
120
|
local prefix = ARGV[7]
|
121
121
|
|
122
|
-
|
122
|
+
removeDeduplicationKeyIfNeeded(prefix, jobAttributes[3])
|
123
123
|
|
124
124
|
-- If job has a parent we need to
|
125
125
|
-- 1) remove this job id from parents dependencies
|
@@ -0,0 +1,26 @@
|
|
1
|
+
--[[
|
2
|
+
Update a job option
|
3
|
+
|
4
|
+
Input:
|
5
|
+
KEYS[1] Job id key
|
6
|
+
|
7
|
+
ARGV[1] field
|
8
|
+
ARGV[2] value
|
9
|
+
|
10
|
+
Output:
|
11
|
+
0 - OK
|
12
|
+
-1 - Missing job.
|
13
|
+
]]
|
14
|
+
local rcall = redis.call
|
15
|
+
|
16
|
+
if rcall("EXISTS", KEYS[1]) == 1 then -- // Make sure job exists
|
17
|
+
|
18
|
+
local opts = rcall("HGET", KEYS[1], "opts")
|
19
|
+
local jsonOpts = cjson.decode(opts)
|
20
|
+
jsonOpts[ARGV[1]] = ARGV[2]
|
21
|
+
|
22
|
+
rcall("HSET", KEYS[1], "opts", cjson.encode(jsonOpts))
|
23
|
+
return 0
|
24
|
+
else
|
25
|
+
return -1
|
26
|
+
end
|
package/dist/cjs/enums/index.js
CHANGED
@@ -5,4 +5,5 @@ tslib_1.__exportStar(require("./child-command"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./error-code"), exports);
|
6
6
|
tslib_1.__exportStar(require("./parent-command"), exports);
|
7
7
|
tslib_1.__exportStar(require("./metrics-time"), exports);
|
8
|
+
tslib_1.__exportStar(require("./telemetry-attributes"), exports);
|
8
9
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enums/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,uDAA6B;AAC7B,2DAAiC;AACjC,yDAA+B"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enums/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,uDAA6B;AAC7B,2DAAiC;AACjC,yDAA+B;AAC/B,iEAAuC"}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.SpanKind = exports.TelemetryAttributes = void 0;
|
4
|
+
var TelemetryAttributes;
|
5
|
+
(function (TelemetryAttributes) {
|
6
|
+
TelemetryAttributes["QueueName"] = "bullmq.queue.name";
|
7
|
+
TelemetryAttributes["QueueOperation"] = "bullmq.queue.operation";
|
8
|
+
TelemetryAttributes["BulkCount"] = "bullmq.job.bulk.count";
|
9
|
+
TelemetryAttributes["BulkNames"] = "bullmq.job.bulk.names";
|
10
|
+
TelemetryAttributes["JobName"] = "bullmq.job.name";
|
11
|
+
TelemetryAttributes["JobId"] = "bullmq.job.id";
|
12
|
+
TelemetryAttributes["JobKey"] = "bullmq.job.key";
|
13
|
+
TelemetryAttributes["JobIds"] = "bullmq.job.ids";
|
14
|
+
TelemetryAttributes["DeduplicationKey"] = "bullmq.job.deduplication.key";
|
15
|
+
TelemetryAttributes["JobOptions"] = "bullmq.job.options";
|
16
|
+
TelemetryAttributes["JobProgress"] = "bullmq.job.progress";
|
17
|
+
TelemetryAttributes["QueueDrainDelay"] = "bullmq.queue.drain.delay";
|
18
|
+
TelemetryAttributes["QueueGrace"] = "bullmq.queue.grace";
|
19
|
+
TelemetryAttributes["QueueCleanLimit"] = "bullmq.queue.clean.limit";
|
20
|
+
TelemetryAttributes["JobType"] = "bullmq.job.type";
|
21
|
+
TelemetryAttributes["QueueOptions"] = "bullmq.queue.options";
|
22
|
+
TelemetryAttributes["QueueEventMaxLength"] = "bullmq.queue.event.max.length";
|
23
|
+
TelemetryAttributes["WorkerOptions"] = "bullmq.worker.options";
|
24
|
+
TelemetryAttributes["WorkerName"] = "bullmq.worker.name";
|
25
|
+
TelemetryAttributes["WorkerId"] = "bullmq.worker.id";
|
26
|
+
TelemetryAttributes["WorkerRateLimit"] = "bullmq.worker.rate.limit";
|
27
|
+
TelemetryAttributes["WorkerDoNotWaitActive"] = "bullmq.worker.do.not.wait.active";
|
28
|
+
TelemetryAttributes["WorkerForceClose"] = "bullmq.worker.force.close";
|
29
|
+
TelemetryAttributes["WorkerStalledJobs"] = "bullmq.worker.stalled.jobs";
|
30
|
+
TelemetryAttributes["WorkerFailedJobs"] = "bullmq.worker.failed.jobs";
|
31
|
+
TelemetryAttributes["WorkerJobsToExtendLocks"] = "bullmq.worker.jobs.to.extend.locks";
|
32
|
+
TelemetryAttributes["JobFinishedTimestamp"] = "bullmq.job.finished.timestamp";
|
33
|
+
TelemetryAttributes["JobProcessedTimestamp"] = "bullmq.job.processed.timestamp";
|
34
|
+
TelemetryAttributes["JobResult"] = "bullmq.job.result";
|
35
|
+
TelemetryAttributes["JobFailedReason"] = "bullmq.job.failed.reason";
|
36
|
+
})(TelemetryAttributes = exports.TelemetryAttributes || (exports.TelemetryAttributes = {}));
|
37
|
+
var SpanKind;
|
38
|
+
(function (SpanKind) {
|
39
|
+
SpanKind[SpanKind["INTERNAL"] = 0] = "INTERNAL";
|
40
|
+
SpanKind[SpanKind["SERVER"] = 1] = "SERVER";
|
41
|
+
SpanKind[SpanKind["CLIENT"] = 2] = "CLIENT";
|
42
|
+
SpanKind[SpanKind["PRODUCER"] = 3] = "PRODUCER";
|
43
|
+
SpanKind[SpanKind["CONSUMER"] = 4] = "CONSUMER";
|
44
|
+
})(SpanKind = exports.SpanKind || (exports.SpanKind = {}));
|
45
|
+
//# sourceMappingURL=telemetry-attributes.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"telemetry-attributes.js","sourceRoot":"","sources":["../../../src/enums/telemetry-attributes.ts"],"names":[],"mappings":";;;AAAA,IAAY,mBA+BX;AA/BD,WAAY,mBAAmB;IAC7B,sDAA+B,CAAA;IAC/B,gEAAyC,CAAA;IACzC,0DAAmC,CAAA;IACnC,0DAAmC,CAAA;IACnC,kDAA2B,CAAA;IAC3B,8CAAuB,CAAA;IACvB,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,wEAAiD,CAAA;IACjD,wDAAiC,CAAA;IACjC,0DAAmC,CAAA;IACnC,mEAA4C,CAAA;IAC5C,wDAAiC,CAAA;IACjC,mEAA4C,CAAA;IAC5C,kDAA2B,CAAA;IAC3B,4DAAqC,CAAA;IACrC,4EAAqD,CAAA;IACrD,8DAAuC,CAAA;IACvC,wDAAiC,CAAA;IACjC,oDAA6B,CAAA;IAC7B,mEAA4C,CAAA;IAC5C,iFAA0D,CAAA;IAC1D,qEAA8C,CAAA;IAC9C,uEAAgD,CAAA;IAChD,qEAA8C,CAAA;IAC9C,qFAA8D,CAAA;IAC9D,6EAAsD,CAAA;IACtD,+EAAwD,CAAA;IACxD,sDAA+B,CAAA;IAC/B,mEAA4C,CAAA;AAC9C,CAAC,EA/BW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QA+B9B;AAED,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,+CAAY,CAAA;IACZ,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,+CAAY,CAAA;IACZ,+CAAY,CAAA;AACd,CAAC,EANW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAMnB"}
|
@@ -27,4 +27,5 @@ tslib_1.__exportStar(require("./sandboxed-job-processor"), exports);
|
|
27
27
|
tslib_1.__exportStar(require("./sandboxed-job"), exports);
|
28
28
|
tslib_1.__exportStar(require("./sandboxed-options"), exports);
|
29
29
|
tslib_1.__exportStar(require("./worker-options"), exports);
|
30
|
+
tslib_1.__exportStar(require("./telemetry"), exports);
|
30
31
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,4DAAkC;AAClC,6DAAmC;AACnC,0DAAgC;AAChC,uDAA6B;AAC7B,6DAAmC;AACnC,qDAA2B;AAC3B,2DAAiC;AACjC,qDAA2B;AAC3B,sDAA4B;AAC5B,4DAAkC;AAClC,oDAA0B;AAC1B,wDAA8B;AAC9B,2DAAiC;AACjC,mDAAyB;AACzB,0DAAgC;AAChC,iEAAuC;AACvC,0DAAgC;AAChC,0DAAgC;AAChC,2DAAiC;AACjC,+DAAqC;AACrC,2DAAiC;AACjC,oEAA0C;AAC1C,0DAAgC;AAChC,8DAAoC;AACpC,2DAAiC"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,4DAAkC;AAClC,6DAAmC;AACnC,0DAAgC;AAChC,uDAA6B;AAC7B,6DAAmC;AACnC,qDAA2B;AAC3B,2DAAiC;AACjC,qDAA2B;AAC3B,sDAA4B;AAC5B,4DAAkC;AAClC,oDAA0B;AAC1B,wDAA8B;AAC9B,2DAAiC;AACjC,mDAAyB;AACzB,0DAAgC;AAChC,iEAAuC;AACvC,0DAAgC;AAChC,0DAAgC;AAChC,2DAAiC;AACjC,+DAAqC;AACrC,2DAAiC;AACjC,oEAA0C;AAC1C,0DAAgC;AAChC,8DAAoC;AACpC,2DAAiC;AACjC,sDAA4B"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"queue-options.js","sourceRoot":"","sources":["../../../src/interfaces/queue-options.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"queue-options.js","sourceRoot":"","sources":["../../../src/interfaces/queue-options.ts"],"names":[],"mappings":";;;AAKA,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,+BAAiB,CAAA;AACnB,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/interfaces/telemetry.ts"],"names":[],"mappings":""}
|
@@ -42,6 +42,7 @@ tslib_1.__exportStar(require("./reprocessJob-8"), exports);
|
|
42
42
|
tslib_1.__exportStar(require("./retryJob-11"), exports);
|
43
43
|
tslib_1.__exportStar(require("./saveStacktrace-1"), exports);
|
44
44
|
tslib_1.__exportStar(require("./updateData-1"), exports);
|
45
|
+
tslib_1.__exportStar(require("./updateJobOption-1"), exports);
|
45
46
|
tslib_1.__exportStar(require("./updateProgress-3"), exports);
|
46
47
|
tslib_1.__exportStar(require("./updateRepeatableJobMillis-1"), exports);
|
47
48
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scripts/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,8DAAoC;AACpC,qDAA2B;AAC3B,2DAAiC;AACjC,gEAAsC;AACtC,+DAAqC;AACrC,6DAAmC;AACnC,0DAAgC;AAChC,6DAAmC;AACnC,6DAAmC;AACnC,oDAA0B;AAC1B,yDAA+B;AAC/B,wDAA8B;AAC9B,mEAAyC;AACzC,wDAA8B;AAC9B,8DAAoC;AACpC,uDAA6B;AAC7B,yDAA+B;AAC/B,yDAA+B;AAC/B,0DAAgC;AAChC,sDAA4B;AAC5B,uEAA6C;AAC7C,6DAAmC;AACnC,oEAA0C;AAC1C,4DAAkC;AAClC,4DAAkC;AAClC,8DAAoC;AACpC,oEAA0C;AAC1C,yDAA+B;AAC/B,uDAA6B;AAC7B,oDAA0B;AAC1B,sDAA4B;AAC5B,0DAAgC;AAChC,oEAA0C;AAC1C,wDAA8B;AAC9B,iEAAuC;AACvC,+DAAqC;AACrC,2DAAiC;AACjC,wDAA8B;AAC9B,6DAAmC;AACnC,yDAA+B;AAC/B,6DAAmC;AACnC,wEAA8C"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scripts/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,8DAAoC;AACpC,qDAA2B;AAC3B,2DAAiC;AACjC,gEAAsC;AACtC,+DAAqC;AACrC,6DAAmC;AACnC,0DAAgC;AAChC,6DAAmC;AACnC,6DAAmC;AACnC,oDAA0B;AAC1B,yDAA+B;AAC/B,wDAA8B;AAC9B,mEAAyC;AACzC,wDAA8B;AAC9B,8DAAoC;AACpC,uDAA6B;AAC7B,yDAA+B;AAC/B,yDAA+B;AAC/B,0DAAgC;AAChC,sDAA4B;AAC5B,uEAA6C;AAC7C,6DAAmC;AACnC,oEAA0C;AAC1C,4DAAkC;AAClC,4DAAkC;AAClC,8DAAoC;AACpC,oEAA0C;AAC1C,yDAA+B;AAC/B,uDAA6B;AAC7B,oDAA0B;AAC1B,sDAA4B;AAC5B,0DAAgC;AAChC,oEAA0C;AAC1C,wDAA8B;AAC9B,iEAAuC;AACvC,+DAAqC;AACrC,2DAAiC;AACjC,wDAA8B;AAC9B,6DAAmC;AACnC,yDAA+B;AAC/B,8DAAoC;AACpC,6DAAmC;AACnC,wEAA8C"}
|
@@ -174,14 +174,14 @@ local function moveParentToWaitIfNeeded(parentQueueKey, parentDependenciesKey,
|
|
174
174
|
end
|
175
175
|
end
|
176
176
|
--[[
|
177
|
-
Function to remove
|
177
|
+
Function to remove deduplication key if needed.
|
178
178
|
]]
|
179
|
-
local function
|
180
|
-
if
|
181
|
-
local
|
182
|
-
local pttl = rcall("PTTL",
|
179
|
+
local function removeDeduplicationKeyIfNeeded(prefixKey, deduplicationId)
|
180
|
+
if deduplicationId then
|
181
|
+
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
|
182
|
+
local pttl = rcall("PTTL", deduplicationKey)
|
183
183
|
if pttl == 0 or pttl == -1 then
|
184
|
-
rcall("DEL",
|
184
|
+
rcall("DEL", deduplicationKey)
|
185
185
|
end
|
186
186
|
end
|
187
187
|
end
|
@@ -193,7 +193,7 @@ local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey,
|
|
193
193
|
rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
|
194
194
|
failedReason, "prev", "waiting-children")
|
195
195
|
local jobAttributes = rcall("HMGET", parentKey, "parent", "deid")
|
196
|
-
|
196
|
+
removeDeduplicationKeyIfNeeded(parentQueueKey .. ":", jobAttributes[2])
|
197
197
|
if jobAttributes[1] then
|
198
198
|
local parentData = cjson.decode(jobAttributes[1])
|
199
199
|
if parentData['fpof'] then
|
@@ -430,7 +430,7 @@ if (#stalling > 0) then
|
|
430
430
|
local opts = cjson.decode(rawOpts)
|
431
431
|
local removeOnFailType = type(opts["removeOnFail"])
|
432
432
|
rcall("ZADD", failedKey, timestamp, jobId)
|
433
|
-
|
433
|
+
removeDeduplicationKeyIfNeeded(queueKeyPrefix, jobAttributes[3])
|
434
434
|
local failedReason =
|
435
435
|
"job stalled more than allowable limit"
|
436
436
|
rcall("HMSET", jobKey, "failedReason", failedReason,
|
@@ -485,7 +485,7 @@ if (#stalling > 0) then
|
|
485
485
|
end
|
486
486
|
table.insert(failed, jobId)
|
487
487
|
else
|
488
|
-
local target, isPausedOrMaxed=
|
488
|
+
local target, isPausedOrMaxed =
|
489
489
|
getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
|
490
490
|
-- Move the job back to the wait queue, to immediately be picked up by a waiting worker.
|
491
491
|
addJobInTargetList(target, markerKey, "RPUSH", isPausedOrMaxed, jobId)
|
@@ -267,14 +267,14 @@ local function moveParentToWaitIfNeeded(parentQueueKey, parentDependenciesKey,
|
|
267
267
|
end
|
268
268
|
end
|
269
269
|
--[[
|
270
|
-
Function to remove
|
270
|
+
Function to remove deduplication key if needed.
|
271
271
|
]]
|
272
|
-
local function
|
273
|
-
if
|
274
|
-
local
|
275
|
-
local pttl = rcall("PTTL",
|
272
|
+
local function removeDeduplicationKeyIfNeeded(prefixKey, deduplicationId)
|
273
|
+
if deduplicationId then
|
274
|
+
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
|
275
|
+
local pttl = rcall("PTTL", deduplicationKey)
|
276
276
|
if pttl == 0 or pttl == -1 then
|
277
|
-
rcall("DEL",
|
277
|
+
rcall("DEL", deduplicationKey)
|
278
278
|
end
|
279
279
|
end
|
280
280
|
end
|
@@ -286,7 +286,7 @@ local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey,
|
|
286
286
|
rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
|
287
287
|
failedReason, "prev", "waiting-children")
|
288
288
|
local jobAttributes = rcall("HMGET", parentKey, "parent", "deid")
|
289
|
-
|
289
|
+
removeDeduplicationKeyIfNeeded(parentQueueKey .. ":", jobAttributes[2])
|
290
290
|
if jobAttributes[1] then
|
291
291
|
local parentData = cjson.decode(jobAttributes[1])
|
292
292
|
if parentData['fpof'] then
|
@@ -606,7 +606,7 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
|
|
606
606
|
-- Trim events before emiting them to avoid trimming events emitted in this script
|
607
607
|
trimEvents(metaKey, eventStreamKey)
|
608
608
|
local prefix = ARGV[7]
|
609
|
-
|
609
|
+
removeDeduplicationKeyIfNeeded(prefix, jobAttributes[3])
|
610
610
|
-- If job has a parent we need to
|
611
611
|
-- 1) remove this job id from parents dependencies
|
612
612
|
-- 2) move the job Id to parent "processed" set
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.updateJobOption = void 0;
|
4
|
+
const content = `--[[
|
5
|
+
Update a job option
|
6
|
+
Input:
|
7
|
+
KEYS[1] Job id key
|
8
|
+
ARGV[1] field
|
9
|
+
ARGV[2] value
|
10
|
+
Output:
|
11
|
+
0 - OK
|
12
|
+
-1 - Missing job.
|
13
|
+
]]
|
14
|
+
local rcall = redis.call
|
15
|
+
if rcall("EXISTS", KEYS[1]) == 1 then -- // Make sure job exists
|
16
|
+
local opts = rcall("HGET", KEYS[1], "opts")
|
17
|
+
local jsonOpts = cjson.decode(opts)
|
18
|
+
jsonOpts[ARGV[1]] = ARGV[2]
|
19
|
+
rcall("HSET", KEYS[1], "opts", cjson.encode(jsonOpts))
|
20
|
+
return 0
|
21
|
+
else
|
22
|
+
return -1
|
23
|
+
end
|
24
|
+
`;
|
25
|
+
exports.updateJobOption = {
|
26
|
+
name: 'updateJobOption',
|
27
|
+
content,
|
28
|
+
keys: 1,
|
29
|
+
};
|
30
|
+
//# sourceMappingURL=updateJobOption-1.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"updateJobOption-1.js","sourceRoot":"","sources":["../../../src/scripts/updateJobOption-1.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;CAoBf,CAAC;AACW,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,iBAAiB;IACvB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|