bullmq 2.2.0 → 2.2.1
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/cjs/classes/job.d.ts +1 -1
- package/dist/cjs/classes/redis-connection.d.ts +6 -2
- package/dist/cjs/classes/redis-connection.js +11 -5
- package/dist/cjs/classes/redis-connection.js.map +1 -1
- package/dist/cjs/scripts/addJob-8.d.ts +5 -0
- package/dist/{esm/commands/addJob-8.lua → cjs/scripts/addJob-8.js} +83 -31
- package/dist/cjs/scripts/addJob-8.js.map +1 -0
- package/dist/cjs/scripts/changeDelay-4.d.ts +5 -0
- package/dist/cjs/{commands/changeDelay-4.lua → scripts/changeDelay-4.js} +11 -11
- package/dist/cjs/scripts/changeDelay-4.js.map +1 -0
- package/dist/cjs/scripts/cleanJobsInSet-2.d.ts +5 -0
- package/dist/cjs/scripts/cleanJobsInSet-2.js +264 -0
- package/dist/cjs/scripts/cleanJobsInSet-2.js.map +1 -0
- package/dist/cjs/scripts/drain-4.d.ts +5 -0
- package/dist/cjs/{commands/includes/removeParentDependencyKey.lua → scripts/drain-4.js} +110 -10
- package/dist/cjs/scripts/drain-4.js.map +1 -0
- package/dist/cjs/scripts/extendLock-2.d.ts +5 -0
- package/dist/{esm/commands/extendLock-2.lua → cjs/scripts/extendLock-2.js} +11 -4
- package/dist/cjs/scripts/extendLock-2.js.map +1 -0
- package/dist/cjs/scripts/getState-7.d.ts +5 -0
- package/dist/{esm/commands/getState-7.lua → cjs/scripts/getState-7.js} +22 -12
- package/dist/cjs/scripts/getState-7.js.map +1 -0
- package/dist/cjs/scripts/getStateV2-7.d.ts +5 -0
- package/dist/cjs/{commands/getStateV2-7.lua → scripts/getStateV2-7.js} +11 -10
- package/dist/cjs/scripts/getStateV2-7.js.map +1 -0
- package/dist/cjs/scripts/index.d.ts +26 -0
- package/dist/cjs/scripts/index.js +30 -0
- package/dist/cjs/scripts/index.js.map +1 -0
- package/dist/cjs/scripts/isFinished-3.d.ts +5 -0
- package/dist/cjs/{commands/isFinished-3.lua → scripts/isFinished-3.js} +11 -10
- package/dist/cjs/scripts/isFinished-3.js.map +1 -0
- package/dist/cjs/scripts/isJobInList-1.d.ts +5 -0
- package/dist/cjs/scripts/isJobInList-1.js +32 -0
- package/dist/cjs/scripts/isJobInList-1.js.map +1 -0
- package/dist/cjs/scripts/moveStalledJobsToWait-8.d.ts +5 -0
- package/dist/cjs/scripts/moveStalledJobsToWait-8.js +291 -0
- package/dist/cjs/scripts/moveStalledJobsToWait-8.js.map +1 -0
- package/dist/cjs/scripts/moveToActive-9.d.ts +5 -0
- package/dist/cjs/scripts/moveToActive-9.js +207 -0
- package/dist/cjs/scripts/moveToActive-9.js.map +1 -0
- package/dist/cjs/scripts/moveToDelayed-5.d.ts +5 -0
- package/dist/cjs/{commands/moveToDelayed-5.lua → scripts/moveToDelayed-5.js} +11 -13
- package/dist/cjs/scripts/moveToDelayed-5.js.map +1 -0
- package/dist/cjs/scripts/moveToFinished-12.d.ts +5 -0
- package/dist/cjs/scripts/moveToFinished-12.js +538 -0
- package/dist/cjs/scripts/moveToFinished-12.js.map +1 -0
- package/dist/cjs/scripts/moveToWaitingChildren-4.d.ts +5 -0
- package/dist/cjs/{commands/moveToWaitingChildren-4.lua → scripts/moveToWaitingChildren-4.js} +11 -14
- package/dist/cjs/scripts/moveToWaitingChildren-4.js.map +1 -0
- package/dist/cjs/scripts/obliterate-2.d.ts +5 -0
- package/dist/cjs/scripts/obliterate-2.js +241 -0
- package/dist/cjs/scripts/obliterate-2.js.map +1 -0
- package/dist/cjs/scripts/pause-4.d.ts +5 -0
- package/dist/{esm/commands/pause-4.lua → cjs/scripts/pause-4.js} +11 -7
- package/dist/cjs/scripts/pause-4.js.map +1 -0
- package/dist/cjs/scripts/promote-6.d.ts +5 -0
- package/dist/cjs/{commands/promote-6.lua → scripts/promote-6.js} +22 -14
- package/dist/cjs/scripts/promote-6.js.map +1 -0
- package/dist/cjs/scripts/releaseLock-1.d.ts +5 -0
- package/dist/{esm/commands/releaseLock-1.lua → cjs/scripts/releaseLock-1.js} +11 -5
- package/dist/cjs/scripts/releaseLock-1.js.map +1 -0
- package/dist/cjs/scripts/removeJob-1.d.ts +5 -0
- package/dist/cjs/scripts/removeJob-1.js +206 -0
- package/dist/cjs/scripts/removeJob-1.js.map +1 -0
- package/dist/cjs/scripts/removeRepeatable-2.d.ts +5 -0
- package/dist/cjs/{commands/removeRepeatable-2.lua → scripts/removeRepeatable-2.js} +11 -7
- package/dist/cjs/scripts/removeRepeatable-2.js.map +1 -0
- package/dist/cjs/scripts/reprocessJob-4.d.ts +5 -0
- package/dist/{esm/commands/reprocessJob-4.lua → cjs/scripts/reprocessJob-4.js} +11 -5
- package/dist/cjs/scripts/reprocessJob-4.js.map +1 -0
- package/dist/cjs/scripts/retryJob-6.d.ts +5 -0
- package/dist/{esm/commands/retryJob-6.lua → cjs/scripts/retryJob-6.js} +22 -13
- package/dist/cjs/scripts/retryJob-6.js.map +1 -0
- package/dist/cjs/scripts/retryJobs-6.d.ts +5 -0
- package/dist/cjs/{commands/retryJobs-6.lua → scripts/retryJobs-6.js} +38 -15
- package/dist/cjs/scripts/retryJobs-6.js.map +1 -0
- package/dist/cjs/scripts/takeLock-1.d.ts +5 -0
- package/dist/cjs/{commands/takeLock-1.lua → scripts/takeLock-1.js} +11 -4
- package/dist/cjs/scripts/takeLock-1.js.map +1 -0
- package/dist/cjs/scripts/updateData-1.d.ts +5 -0
- package/dist/cjs/scripts/updateData-1.js +23 -0
- package/dist/cjs/scripts/updateData-1.js.map +1 -0
- package/dist/cjs/scripts/updateProgress-2.d.ts +5 -0
- package/dist/{esm/commands/updateProgress-2.lua → cjs/scripts/updateProgress-2.js} +11 -5
- package/dist/cjs/scripts/updateProgress-2.js.map +1 -0
- package/dist/esm/classes/job.d.ts +1 -1
- package/dist/esm/classes/redis-connection.d.ts +6 -2
- package/dist/esm/classes/redis-connection.js +11 -5
- package/dist/esm/classes/redis-connection.js.map +1 -1
- package/dist/esm/scripts/addJob-8.d.ts +5 -0
- package/dist/{cjs/commands/addJob-8.lua → esm/scripts/addJob-8.js} +80 -31
- package/dist/esm/scripts/addJob-8.js.map +1 -0
- package/dist/esm/scripts/changeDelay-4.d.ts +5 -0
- package/dist/esm/{commands/changeDelay-4.lua → scripts/changeDelay-4.js} +8 -11
- package/dist/esm/scripts/changeDelay-4.js.map +1 -0
- package/dist/esm/scripts/cleanJobsInSet-2.d.ts +5 -0
- package/dist/esm/scripts/cleanJobsInSet-2.js +261 -0
- package/dist/esm/scripts/cleanJobsInSet-2.js.map +1 -0
- package/dist/esm/scripts/drain-4.d.ts +5 -0
- package/dist/esm/{commands/includes/removeParentDependencyKey.lua → scripts/drain-4.js} +107 -10
- package/dist/esm/scripts/drain-4.js.map +1 -0
- package/dist/esm/scripts/extendLock-2.d.ts +5 -0
- package/dist/{cjs/commands/extendLock-2.lua → esm/scripts/extendLock-2.js} +8 -4
- package/dist/esm/scripts/extendLock-2.js.map +1 -0
- package/dist/esm/scripts/getState-7.d.ts +5 -0
- package/dist/{cjs/commands/getState-7.lua → esm/scripts/getState-7.js} +19 -12
- package/dist/esm/scripts/getState-7.js.map +1 -0
- package/dist/esm/scripts/getStateV2-7.d.ts +5 -0
- package/dist/esm/{commands/getStateV2-7.lua → scripts/getStateV2-7.js} +8 -10
- package/dist/esm/scripts/getStateV2-7.js.map +1 -0
- package/dist/esm/scripts/index.d.ts +26 -0
- package/dist/esm/scripts/index.js +27 -0
- package/dist/esm/scripts/index.js.map +1 -0
- package/dist/esm/scripts/isFinished-3.d.ts +5 -0
- package/dist/esm/{commands/isFinished-3.lua → scripts/isFinished-3.js} +8 -10
- package/dist/esm/scripts/isFinished-3.js.map +1 -0
- package/dist/esm/scripts/isJobInList-1.d.ts +5 -0
- package/dist/esm/scripts/isJobInList-1.js +29 -0
- package/dist/esm/scripts/isJobInList-1.js.map +1 -0
- package/dist/esm/scripts/moveStalledJobsToWait-8.d.ts +5 -0
- package/dist/esm/scripts/moveStalledJobsToWait-8.js +288 -0
- package/dist/esm/scripts/moveStalledJobsToWait-8.js.map +1 -0
- package/dist/esm/scripts/moveToActive-9.d.ts +5 -0
- package/dist/esm/scripts/moveToActive-9.js +204 -0
- package/dist/esm/scripts/moveToActive-9.js.map +1 -0
- package/dist/esm/scripts/moveToDelayed-5.d.ts +5 -0
- package/dist/esm/{commands/moveToDelayed-5.lua → scripts/moveToDelayed-5.js} +8 -13
- package/dist/esm/scripts/moveToDelayed-5.js.map +1 -0
- package/dist/esm/scripts/moveToFinished-12.d.ts +5 -0
- package/dist/esm/scripts/moveToFinished-12.js +535 -0
- package/dist/esm/scripts/moveToFinished-12.js.map +1 -0
- package/dist/esm/scripts/moveToWaitingChildren-4.d.ts +5 -0
- package/dist/esm/{commands/moveToWaitingChildren-4.lua → scripts/moveToWaitingChildren-4.js} +8 -14
- package/dist/esm/scripts/moveToWaitingChildren-4.js.map +1 -0
- package/dist/esm/scripts/obliterate-2.d.ts +5 -0
- package/dist/esm/scripts/obliterate-2.js +238 -0
- package/dist/esm/scripts/obliterate-2.js.map +1 -0
- package/dist/esm/scripts/pause-4.d.ts +5 -0
- package/dist/{cjs/commands/pause-4.lua → esm/scripts/pause-4.js} +8 -7
- package/dist/esm/scripts/pause-4.js.map +1 -0
- package/dist/esm/scripts/promote-6.d.ts +5 -0
- package/dist/esm/{commands/promote-6.lua → scripts/promote-6.js} +19 -14
- package/dist/esm/scripts/promote-6.js.map +1 -0
- package/dist/esm/scripts/releaseLock-1.d.ts +5 -0
- package/dist/{cjs/commands/releaseLock-1.lua → esm/scripts/releaseLock-1.js} +8 -5
- package/dist/esm/scripts/releaseLock-1.js.map +1 -0
- package/dist/esm/scripts/removeJob-1.d.ts +5 -0
- package/dist/esm/scripts/removeJob-1.js +203 -0
- package/dist/esm/scripts/removeJob-1.js.map +1 -0
- package/dist/esm/scripts/removeRepeatable-2.d.ts +5 -0
- package/dist/esm/{commands/removeRepeatable-2.lua → scripts/removeRepeatable-2.js} +8 -7
- package/dist/esm/scripts/removeRepeatable-2.js.map +1 -0
- package/dist/esm/scripts/reprocessJob-4.d.ts +5 -0
- package/dist/{cjs/commands/reprocessJob-4.lua → esm/scripts/reprocessJob-4.js} +8 -5
- package/dist/esm/scripts/reprocessJob-4.js.map +1 -0
- package/dist/esm/scripts/retryJob-6.d.ts +5 -0
- package/dist/{cjs/commands/retryJob-6.lua → esm/scripts/retryJob-6.js} +19 -13
- package/dist/esm/scripts/retryJob-6.js.map +1 -0
- package/dist/esm/scripts/retryJobs-6.d.ts +5 -0
- package/dist/esm/{commands/retryJobs-6.lua → scripts/retryJobs-6.js} +35 -15
- package/dist/esm/scripts/retryJobs-6.js.map +1 -0
- package/dist/esm/scripts/takeLock-1.d.ts +5 -0
- package/dist/esm/{commands/takeLock-1.lua → scripts/takeLock-1.js} +8 -4
- package/dist/esm/scripts/takeLock-1.js.map +1 -0
- package/dist/esm/scripts/updateData-1.d.ts +5 -0
- package/dist/esm/{commands/updateData-1.lua → scripts/updateData-1.js} +8 -4
- package/dist/esm/scripts/updateData-1.js.map +1 -0
- package/dist/esm/scripts/updateProgress-2.d.ts +5 -0
- package/dist/{cjs/commands/updateProgress-2.lua → esm/scripts/updateProgress-2.js} +8 -5
- package/dist/esm/scripts/updateProgress-2.js.map +1 -0
- package/package.json +4 -2
- package/dist/cjs/commands/cleanJobsInSet-2.lua +0 -46
- package/dist/cjs/commands/drain-4.lua +0 -25
- package/dist/cjs/commands/includes/addJobWithPriority.lua +0 -16
- package/dist/cjs/commands/includes/batches.lua +0 -18
- package/dist/cjs/commands/includes/checkItemInList.lua +0 -12
- package/dist/cjs/commands/includes/checkStalledJobs.lua +0 -137
- package/dist/cjs/commands/includes/cleanList.lua +0 -50
- package/dist/cjs/commands/includes/cleanSet.lua +0 -50
- package/dist/cjs/commands/includes/collectMetrics.lua +0 -46
- package/dist/cjs/commands/includes/destructureJobKey.lua +0 -12
- package/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +0 -13
- package/dist/cjs/commands/includes/getTargetQueueList.lua +0 -12
- package/dist/cjs/commands/includes/getTimestamp.lua +0 -19
- package/dist/cjs/commands/includes/getZSetItems.lua +0 -7
- package/dist/cjs/commands/includes/isLocked.lua +0 -31
- package/dist/cjs/commands/includes/moveJobFromWaitToActive.lua +0 -84
- package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -25
- package/dist/cjs/commands/includes/promoteDelayedJobs.lua +0 -49
- package/dist/cjs/commands/includes/removeJob.lua +0 -13
- package/dist/cjs/commands/includes/removeJobFromAnyState.lua +0 -26
- package/dist/cjs/commands/includes/removeJobs.lua +0 -38
- package/dist/cjs/commands/includes/removeJobsByMaxAge.lua +0 -15
- package/dist/cjs/commands/includes/removeJobsByMaxCount.lua +0 -15
- package/dist/cjs/commands/includes/trimEvents.lua +0 -12
- package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +0 -28
- package/dist/cjs/commands/isJobInList-1.lua +0 -16
- package/dist/cjs/commands/moveStalledJobsToWait-8.lua +0 -24
- package/dist/cjs/commands/moveToActive-9.lua +0 -67
- package/dist/cjs/commands/moveToFinished-12.lua +0 -201
- package/dist/cjs/commands/obliterate-2.lua +0 -94
- package/dist/cjs/commands/removeJob-1.lua +0 -72
- package/dist/cjs/commands/updateData-1.lua +0 -16
- package/dist/esm/commands/cleanJobsInSet-2.lua +0 -46
- package/dist/esm/commands/drain-4.lua +0 -25
- package/dist/esm/commands/includes/addJobWithPriority.lua +0 -16
- package/dist/esm/commands/includes/batches.lua +0 -18
- package/dist/esm/commands/includes/checkItemInList.lua +0 -12
- package/dist/esm/commands/includes/checkStalledJobs.lua +0 -137
- package/dist/esm/commands/includes/cleanList.lua +0 -50
- package/dist/esm/commands/includes/cleanSet.lua +0 -50
- package/dist/esm/commands/includes/collectMetrics.lua +0 -46
- package/dist/esm/commands/includes/destructureJobKey.lua +0 -12
- package/dist/esm/commands/includes/getNextDelayedTimestamp.lua +0 -13
- package/dist/esm/commands/includes/getTargetQueueList.lua +0 -12
- package/dist/esm/commands/includes/getTimestamp.lua +0 -19
- package/dist/esm/commands/includes/getZSetItems.lua +0 -7
- package/dist/esm/commands/includes/isLocked.lua +0 -31
- package/dist/esm/commands/includes/moveJobFromWaitToActive.lua +0 -84
- package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -25
- package/dist/esm/commands/includes/promoteDelayedJobs.lua +0 -49
- package/dist/esm/commands/includes/removeJob.lua +0 -13
- package/dist/esm/commands/includes/removeJobFromAnyState.lua +0 -26
- package/dist/esm/commands/includes/removeJobs.lua +0 -38
- package/dist/esm/commands/includes/removeJobsByMaxAge.lua +0 -15
- package/dist/esm/commands/includes/removeJobsByMaxCount.lua +0 -15
- package/dist/esm/commands/includes/trimEvents.lua +0 -12
- package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +0 -28
- package/dist/esm/commands/isJobInList-1.lua +0 -16
- package/dist/esm/commands/moveStalledJobsToWait-8.lua +0 -24
- package/dist/esm/commands/moveToActive-9.lua +0 -67
- package/dist/esm/commands/moveToFinished-12.lua +0 -201
- package/dist/esm/commands/obliterate-2.lua +0 -94
- package/dist/esm/commands/removeJob-1.lua +0 -72
@@ -1,21 +1,20 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.removeRepeatable = void 0;
|
4
|
+
const content = `--[[
|
3
5
|
Removes a repeatable job
|
4
6
|
Input:
|
5
7
|
KEYS[1] repeat jobs key
|
6
8
|
KEYS[2] delayed jobs key
|
7
|
-
|
8
9
|
ARGV[1] repeat job id
|
9
10
|
ARGV[2] repeat job key
|
10
11
|
ARGV[3] queue key
|
11
|
-
|
12
12
|
Output:
|
13
13
|
0 - OK
|
14
14
|
1 - Missing repeat job
|
15
15
|
]]
|
16
16
|
local rcall = redis.call
|
17
17
|
local millis = rcall("ZSCORE", KEYS[1], ARGV[2])
|
18
|
-
|
19
18
|
if(millis) then
|
20
19
|
-- Delete next programmed job.
|
21
20
|
local repeatJobId = ARGV[1] .. millis
|
@@ -24,9 +23,14 @@ if(millis) then
|
|
24
23
|
rcall("XADD", ARGV[3] .. "events", "*", "event", "removed", "jobId", repeatJobId, "prev", "delayed");
|
25
24
|
end
|
26
25
|
end
|
27
|
-
|
28
26
|
if(rcall("ZREM", KEYS[1], ARGV[2]) == 1) then
|
29
27
|
return 0
|
30
28
|
end
|
31
|
-
|
32
29
|
return 1
|
30
|
+
`;
|
31
|
+
exports.removeRepeatable = {
|
32
|
+
name: 'removeRepeatable',
|
33
|
+
content,
|
34
|
+
keys: 2,
|
35
|
+
};
|
36
|
+
//# sourceMappingURL=removeRepeatable-2.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"removeRepeatable-2.js","sourceRoot":"","sources":["../../../src/scripts/removeRepeatable-2.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Bf,CAAC;AACW,QAAA,gBAAgB,GAAG;IAC9B,IAAI,EAAE,kBAAkB;IACxB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -1,17 +1,17 @@
|
|
1
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.reprocessJob = void 0;
|
4
|
+
const content = `--[[
|
2
5
|
Attempts to reprocess a job
|
3
|
-
|
4
6
|
Input:
|
5
7
|
KEYS[1] job key
|
6
8
|
KEYS[2] events stream
|
7
9
|
KEYS[3] job state
|
8
10
|
KEYS[4] wait key
|
9
|
-
|
10
11
|
ARGV[1] job.id
|
11
12
|
ARGV[2] (job.opts.lifo ? 'R' : 'L') + 'PUSH'
|
12
13
|
ARGV[3] propVal - failedReason/returnvalue
|
13
14
|
ARGV[4] prev state - failed/completed
|
14
|
-
|
15
15
|
Output:
|
16
16
|
1 means the operation was a success
|
17
17
|
-1 means the job does not exist
|
@@ -23,7 +23,6 @@ if (rcall("EXISTS", KEYS[1]) == 1) then
|
|
23
23
|
if (rcall("ZREM", KEYS[3], jobId) == 1) then
|
24
24
|
rcall(ARGV[2], KEYS[4], jobId)
|
25
25
|
rcall("HDEL", KEYS[1], "finishedOn", "processedOn", ARGV[3])
|
26
|
-
|
27
26
|
-- Emit waiting event
|
28
27
|
rcall("XADD", KEYS[2], "*", "event", "waiting", "jobId", jobId, "prev", ARGV[4]);
|
29
28
|
return 1
|
@@ -33,3 +32,10 @@ if (rcall("EXISTS", KEYS[1]) == 1) then
|
|
33
32
|
else
|
34
33
|
return -1
|
35
34
|
end
|
35
|
+
`;
|
36
|
+
exports.reprocessJob = {
|
37
|
+
name: 'reprocessJob',
|
38
|
+
content,
|
39
|
+
keys: 4,
|
40
|
+
};
|
41
|
+
//# sourceMappingURL=reprocessJob-4.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"reprocessJob-4.js","sourceRoot":"","sources":["../../../src/scripts/reprocessJob-4.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bf,CAAC;AACW,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,cAAc;IACpB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -1,6 +1,8 @@
|
|
1
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.retryJob = void 0;
|
4
|
+
const content = `--[[
|
2
5
|
Retries a failed job by moving it back to the wait queue.
|
3
|
-
|
4
6
|
Input:
|
5
7
|
KEYS[1] 'active',
|
6
8
|
KEYS[2] 'wait'
|
@@ -8,26 +10,30 @@
|
|
8
10
|
KEYS[4] job key
|
9
11
|
KEYS[5] 'meta'
|
10
12
|
KEYS[6] events stream
|
11
|
-
|
12
13
|
ARGV[1] pushCmd
|
13
14
|
ARGV[2] jobId
|
14
15
|
ARGV[3] token
|
15
|
-
|
16
16
|
Events:
|
17
17
|
'waiting'
|
18
|
-
|
19
18
|
Output:
|
20
19
|
0 - OK
|
21
20
|
-1 - Missing key
|
22
21
|
-2 - Missing lock
|
23
22
|
]]
|
24
23
|
local rcall = redis.call
|
25
|
-
|
26
24
|
-- Includes
|
27
|
-
|
28
|
-
|
25
|
+
--[[
|
26
|
+
Function to check for the meta.paused key to decide if we are paused or not
|
27
|
+
(since an empty list and !EXISTS are not really the same).
|
28
|
+
]]
|
29
|
+
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
30
|
+
if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
|
31
|
+
return waitKey
|
32
|
+
else
|
33
|
+
return pausedKey
|
34
|
+
end
|
35
|
+
end
|
29
36
|
if rcall("EXISTS", KEYS[4]) == 1 then
|
30
|
-
|
31
37
|
if ARGV[3] ~= "0" then
|
32
38
|
local lockKey = KEYS[4] .. ':lock'
|
33
39
|
if rcall("GET", lockKey) == ARGV[3] then
|
@@ -36,16 +42,19 @@ if rcall("EXISTS", KEYS[4]) == 1 then
|
|
36
42
|
return -2
|
37
43
|
end
|
38
44
|
end
|
39
|
-
|
40
45
|
local target = getTargetQueueList(KEYS[5], KEYS[2], KEYS[3])
|
41
|
-
|
42
46
|
rcall("LREM", KEYS[1], 0, ARGV[2])
|
43
47
|
rcall(ARGV[1], target, ARGV[2])
|
44
|
-
|
45
48
|
-- Emit waiting event
|
46
49
|
rcall("XADD", KEYS[6], "*", "event", "waiting", "jobId", ARGV[2], "prev", "failed");
|
47
|
-
|
48
50
|
return 0
|
49
51
|
else
|
50
52
|
return -1
|
51
53
|
end
|
54
|
+
`;
|
55
|
+
exports.retryJob = {
|
56
|
+
name: 'retryJob',
|
57
|
+
content,
|
58
|
+
keys: 6,
|
59
|
+
};
|
60
|
+
//# sourceMappingURL=retryJob-6.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"retryJob-6.js","sourceRoot":"","sources":["../../../src/scripts/retryJob-6.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDf,CAAC;AACW,QAAA,QAAQ,GAAG;IACtB,IAAI,EAAE,UAAU;IAChB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -1,6 +1,8 @@
|
|
1
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.retryJobs = void 0;
|
4
|
+
const content = `--[[
|
2
5
|
Attempts to retry all failed jobs
|
3
|
-
|
4
6
|
Input:
|
5
7
|
KEYS[1] base key
|
6
8
|
KEYS[2] events stream
|
@@ -8,46 +10,67 @@
|
|
8
10
|
KEYS[4] 'wait'
|
9
11
|
KEYS[5] 'paused'
|
10
12
|
KEYS[6] 'meta'
|
11
|
-
|
12
13
|
ARGV[1] count
|
13
14
|
ARGV[2] timestamp
|
14
15
|
ARGV[3] prev state
|
15
|
-
|
16
16
|
Output:
|
17
17
|
1 means the operation is not completed
|
18
18
|
0 means the operation is completed
|
19
19
|
]]
|
20
20
|
local maxCount = tonumber(ARGV[1])
|
21
21
|
local timestamp = tonumber(ARGV[2])
|
22
|
-
|
23
22
|
local rcall = redis.call;
|
24
|
-
|
25
23
|
-- Includes
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
--[[
|
25
|
+
Function to loop in batches.
|
26
|
+
Just a bit of warning, some commands as ZREM
|
27
|
+
could receive a maximum of 7000 parameters per call.
|
28
|
+
]]
|
29
|
+
local function batches(n, batchSize)
|
30
|
+
local i = 0
|
31
|
+
return function()
|
32
|
+
local from = i * batchSize + 1
|
33
|
+
i = i + 1
|
34
|
+
if (from <= n) then
|
35
|
+
local to = math.min(from + batchSize - 1, n)
|
36
|
+
return from, to
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
--[[
|
41
|
+
Function to check for the meta.paused key to decide if we are paused or not
|
42
|
+
(since an empty list and !EXISTS are not really the same).
|
43
|
+
]]
|
44
|
+
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
45
|
+
if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
|
46
|
+
return waitKey
|
47
|
+
else
|
48
|
+
return pausedKey
|
49
|
+
end
|
50
|
+
end
|
29
51
|
local target = getTargetQueueList(KEYS[6], KEYS[4], KEYS[5])
|
30
|
-
|
31
52
|
local jobs = rcall('ZRANGEBYSCORE', KEYS[3], 0, timestamp, 'LIMIT', 0, maxCount)
|
32
53
|
if (#jobs > 0) then
|
33
54
|
for i, key in ipairs(jobs) do
|
34
55
|
local jobKey = KEYS[1] .. key
|
35
56
|
rcall("HDEL", jobKey, "finishedOn", "processedOn", "failedReason", "returnvalue")
|
36
|
-
|
37
57
|
-- Emit waiting event
|
38
58
|
rcall("XADD", KEYS[2], "*", "event", "waiting", "jobId", key, "prev", ARGV[3]);
|
39
59
|
end
|
40
|
-
|
41
60
|
for from, to in batches(#jobs, 7000) do
|
42
61
|
rcall("ZREM", KEYS[3], unpack(jobs, from, to))
|
43
62
|
rcall("LPUSH", target, unpack(jobs, from, to))
|
44
63
|
end
|
45
64
|
end
|
46
|
-
|
47
65
|
maxCount = maxCount - #jobs
|
48
|
-
|
49
66
|
if(maxCount <= 0) then
|
50
67
|
return 1
|
51
68
|
end
|
52
|
-
|
53
69
|
return 0
|
70
|
+
`;
|
71
|
+
exports.retryJobs = {
|
72
|
+
name: 'retryJobs',
|
73
|
+
content,
|
74
|
+
keys: 6,
|
75
|
+
};
|
76
|
+
//# sourceMappingURL=retryJobs-6.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"retryJobs-6.js","sourceRoot":"","sources":["../../../src/scripts/retryJobs-6.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEf,CAAC;AACW,QAAA,SAAS,GAAG;IACvB,IAAI,EAAE,WAAW;IACjB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -1,12 +1,12 @@
|
|
1
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.takeLock = void 0;
|
4
|
+
const content = `--[[
|
2
5
|
Takes a lock
|
3
|
-
|
4
6
|
Input:
|
5
7
|
KEYS[1] 'lock',
|
6
|
-
|
7
8
|
ARGV[1] token
|
8
9
|
ARGV[2] lock duration in milliseconds
|
9
|
-
|
10
10
|
Output:
|
11
11
|
"OK" if lock extented succesfully.
|
12
12
|
]]
|
@@ -15,3 +15,10 @@ if redis.call("SET", KEYS[1], ARGV[1], "NX", "PX", ARGV[2]) then
|
|
15
15
|
else
|
16
16
|
return 0
|
17
17
|
end
|
18
|
+
`;
|
19
|
+
exports.takeLock = {
|
20
|
+
name: 'takeLock',
|
21
|
+
content,
|
22
|
+
keys: 1,
|
23
|
+
};
|
24
|
+
//# sourceMappingURL=takeLock-1.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"takeLock-1.js","sourceRoot":"","sources":["../../../src/scripts/takeLock-1.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;CAcf,CAAC;AACW,QAAA,QAAQ,GAAG;IACtB,IAAI,EAAE,UAAU;IAChB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.updateData = void 0;
|
4
|
+
const content = `--[[
|
5
|
+
Update job data
|
6
|
+
Input:
|
7
|
+
KEYS[1] Job id key
|
8
|
+
ARGV[1] data
|
9
|
+
]]
|
10
|
+
local rcall = redis.call
|
11
|
+
if rcall("EXISTS",KEYS[1]) == 1 then -- // Make sure job exists
|
12
|
+
rcall("HSET", KEYS[1], "data", ARGV[1])
|
13
|
+
return 0
|
14
|
+
else
|
15
|
+
return -1
|
16
|
+
end
|
17
|
+
`;
|
18
|
+
exports.updateData = {
|
19
|
+
name: 'updateData',
|
20
|
+
content,
|
21
|
+
keys: 1,
|
22
|
+
};
|
23
|
+
//# sourceMappingURL=updateData-1.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"updateData-1.js","sourceRoot":"","sources":["../../../src/scripts/updateData-1.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;CAaf,CAAC;AACW,QAAA,UAAU,GAAG;IACxB,IAAI,EAAE,YAAY;IAClB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -1,18 +1,17 @@
|
|
1
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.updateProgress = void 0;
|
4
|
+
const content = `--[[
|
2
5
|
Update job progress
|
3
|
-
|
4
6
|
Input:
|
5
7
|
KEYS[1] Job id key
|
6
8
|
KEYS[2] event stream key
|
7
|
-
|
8
9
|
ARGV[1] id
|
9
10
|
ARGV[2] progress
|
10
|
-
|
11
11
|
Event:
|
12
12
|
progress(jobId, progress)
|
13
13
|
]]
|
14
14
|
local rcall = redis.call
|
15
|
-
|
16
15
|
if rcall("EXISTS",KEYS[1]) == 1 then -- // Make sure job exists
|
17
16
|
rcall("HSET", KEYS[1], "progress", ARGV[2])
|
18
17
|
rcall("XADD", KEYS[2], "*", "event", "progress", "jobId", ARGV[1], "data", ARGV[2]);
|
@@ -20,3 +19,10 @@ if rcall("EXISTS",KEYS[1]) == 1 then -- // Make sure job exists
|
|
20
19
|
else
|
21
20
|
return -1
|
22
21
|
end
|
22
|
+
`;
|
23
|
+
exports.updateProgress = {
|
24
|
+
name: 'updateProgress',
|
25
|
+
content,
|
26
|
+
keys: 2,
|
27
|
+
};
|
28
|
+
//# sourceMappingURL=updateProgress-2.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"updateProgress-2.js","sourceRoot":"","sources":["../../../src/scripts/updateProgress-2.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;CAkBf,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -154,7 +154,7 @@ export declare class Job<DataType = any, ReturnType = any, NameType extends stri
|
|
154
154
|
* @returns
|
155
155
|
*/
|
156
156
|
static fromId<T = any, R = any, N extends string = string>(queue: MinimalQueue, jobId: string): Promise<Job<T, R, N> | undefined>;
|
157
|
-
toJSON(): Omit<this, "toJSON" | "scripts" | "prefix" | "discard" | "addJob" | "
|
157
|
+
toJSON(): Omit<this, "toJSON" | "scripts" | "prefix" | "discard" | "addJob" | "changeDelay" | "extendLock" | "getState" | "moveToDelayed" | "moveToWaitingChildren" | "promote" | "updateProgress" | "queue" | "asJSON" | "asJSONSandbox" | "update" | "log" | "remove" | "moveToCompleted" | "moveToFailed" | "isCompleted" | "isFailed" | "isDelayed" | "isWaitingChildren" | "isActive" | "isWaiting" | "queueName" | "queueQualifiedName" | "getChildrenValues" | "getDependencies" | "getDependenciesCount" | "waitUntilFinished" | "retry">;
|
158
158
|
/**
|
159
159
|
* Prepares a job to be serialized for storage in Redis.
|
160
160
|
* @returns
|
@@ -1,7 +1,11 @@
|
|
1
1
|
/// <reference types="node" />
|
2
2
|
import { EventEmitter } from 'events';
|
3
|
-
import { ScriptMetadata } from '../commands';
|
4
3
|
import { ConnectionOptions, RedisClient } from '../interfaces';
|
4
|
+
export interface RawCommand {
|
5
|
+
content: string;
|
6
|
+
name: string;
|
7
|
+
keys: number;
|
8
|
+
}
|
5
9
|
export declare class RedisConnection extends EventEmitter {
|
6
10
|
private readonly shared;
|
7
11
|
private readonly blocking;
|
@@ -23,7 +27,7 @@ export declare class RedisConnection extends EventEmitter {
|
|
23
27
|
*/
|
24
28
|
static waitUntilReady(client: RedisClient): Promise<void>;
|
25
29
|
get client(): Promise<RedisClient>;
|
26
|
-
protected loadCommands(
|
30
|
+
protected loadCommands(): void;
|
27
31
|
private init;
|
28
32
|
disconnect(): Promise<void>;
|
29
33
|
reconnect(): Promise<void>;
|
@@ -3,9 +3,8 @@ import { default as IORedis } from 'ioredis';
|
|
3
3
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
4
4
|
// @ts-ignore
|
5
5
|
import { CONNECTION_CLOSED_ERROR_MSG } from 'ioredis/built/utils';
|
6
|
-
import { scriptLoader } from '../commands';
|
7
6
|
import { isNotConnectionError, isRedisCluster, isRedisInstance, isRedisVersionLowerThan, } from '../utils';
|
8
|
-
import * as
|
7
|
+
import * as scripts from '../scripts';
|
9
8
|
const overrideMessage = [
|
10
9
|
'BullMQ: WARNING! Your redis options maxRetriesPerRequest must be null',
|
11
10
|
'and will be overridden by BullMQ.',
|
@@ -102,9 +101,16 @@ export class RedisConnection extends EventEmitter {
|
|
102
101
|
get client() {
|
103
102
|
return this.initializing;
|
104
103
|
}
|
105
|
-
loadCommands(
|
106
|
-
|
107
|
-
|
104
|
+
loadCommands() {
|
105
|
+
for (const property in scripts) {
|
106
|
+
// Only define the command if not already defined
|
107
|
+
if (!this._client[scripts[property].name]) {
|
108
|
+
this._client.defineCommand(scripts[property].name, {
|
109
|
+
numberOfKeys: scripts[property].keys,
|
110
|
+
lua: scripts[property].content,
|
111
|
+
});
|
112
|
+
}
|
113
|
+
}
|
108
114
|
}
|
109
115
|
async init() {
|
110
116
|
if (!this._client) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"redis-connection.js","sourceRoot":"","sources":["../../../src/classes/redis-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC;AAC7C,6DAA6D;AAC7D,aAAa;AACb,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;
|
1
|
+
{"version":3,"file":"redis-connection.js","sourceRoot":"","sources":["../../../src/classes/redis-connection.ts"],"names":[],"mappings":"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"}
|