bullmq 2.3.1 → 2.3.2
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/redis-connection.js +1 -1
- package/dist/cjs/classes/redis-connection.js.map +1 -1
- package/dist/cjs/commands/addJob-8.lua +174 -0
- package/dist/cjs/commands/changeDelay-4.lua +43 -0
- package/dist/cjs/commands/cleanJobsInSet-2.lua +46 -0
- package/dist/cjs/commands/drain-4.lua +25 -0
- package/dist/cjs/commands/extendLock-2.lua +23 -0
- package/dist/cjs/commands/getState-7.lua +57 -0
- package/dist/cjs/commands/getStateV2-7.lua +51 -0
- package/dist/cjs/commands/includes/addJobWithPriority.lua +16 -0
- package/dist/cjs/commands/includes/batches.lua +18 -0
- package/dist/cjs/commands/includes/checkItemInList.lua +12 -0
- package/dist/cjs/commands/includes/checkStalledJobs.lua +137 -0
- package/dist/cjs/commands/includes/cleanList.lua +50 -0
- package/dist/cjs/commands/includes/cleanSet.lua +50 -0
- package/dist/cjs/commands/includes/collectMetrics.lua +46 -0
- package/dist/cjs/commands/includes/destructureJobKey.lua +12 -0
- package/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +13 -0
- package/dist/cjs/commands/includes/getTargetQueueList.lua +12 -0
- package/dist/cjs/commands/includes/getTimestamp.lua +19 -0
- package/dist/cjs/commands/includes/getZSetItems.lua +7 -0
- package/dist/cjs/commands/includes/isLocked.lua +31 -0
- package/dist/cjs/commands/includes/moveJobFromWaitToActive.lua +84 -0
- package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
- package/dist/cjs/commands/includes/promoteDelayedJobs.lua +49 -0
- package/dist/cjs/commands/includes/removeJob.lua +13 -0
- package/dist/cjs/commands/includes/removeJobFromAnyState.lua +26 -0
- package/dist/cjs/commands/includes/removeJobs.lua +38 -0
- package/dist/cjs/commands/includes/removeJobsByMaxAge.lua +15 -0
- package/dist/cjs/commands/includes/removeJobsByMaxCount.lua +15 -0
- package/dist/cjs/commands/includes/removeParentDependencyKey.lua +81 -0
- package/dist/cjs/commands/includes/trimEvents.lua +12 -0
- package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +28 -0
- package/dist/cjs/commands/isFinished-3.lua +48 -0
- package/dist/cjs/commands/isJobInList-1.lua +16 -0
- package/dist/cjs/commands/moveStalledJobsToWait-8.lua +24 -0
- package/dist/cjs/commands/moveToActive-9.lua +67 -0
- package/dist/cjs/commands/moveToDelayed-5.lua +54 -0
- package/dist/cjs/commands/moveToFinished-12.lua +201 -0
- package/dist/cjs/commands/moveToWaitingChildren-4.lua +62 -0
- package/dist/cjs/commands/obliterate-2.lua +94 -0
- package/dist/cjs/commands/pause-4.lua +27 -0
- package/dist/cjs/commands/promote-6.lua +59 -0
- package/dist/cjs/commands/releaseLock-1.lua +19 -0
- package/dist/cjs/commands/removeJob-1.lua +72 -0
- package/dist/cjs/commands/removeRepeatable-2.lua +32 -0
- package/dist/cjs/commands/reprocessJob-4.lua +35 -0
- package/dist/cjs/commands/retryJob-6.lua +51 -0
- package/dist/cjs/commands/retryJobs-6.lua +53 -0
- package/dist/cjs/commands/takeLock-1.lua +17 -0
- package/dist/cjs/commands/updateData-1.lua +16 -0
- package/dist/cjs/commands/updateProgress-2.lua +22 -0
- package/dist/cjs/scripts/moveToFinished-12.js +5 -2
- package/dist/cjs/scripts/moveToFinished-12.js.map +1 -1
- package/dist/esm/classes/redis-connection.js +1 -1
- package/dist/esm/classes/redis-connection.js.map +1 -1
- package/dist/esm/commands/addJob-8.lua +174 -0
- package/dist/esm/commands/changeDelay-4.lua +43 -0
- package/dist/esm/commands/cleanJobsInSet-2.lua +46 -0
- package/dist/esm/commands/drain-4.lua +25 -0
- package/dist/esm/commands/extendLock-2.lua +23 -0
- package/dist/esm/commands/getState-7.lua +57 -0
- package/dist/esm/commands/getStateV2-7.lua +51 -0
- package/dist/esm/commands/includes/addJobWithPriority.lua +16 -0
- package/dist/esm/commands/includes/batches.lua +18 -0
- package/dist/esm/commands/includes/checkItemInList.lua +12 -0
- package/dist/esm/commands/includes/checkStalledJobs.lua +137 -0
- package/dist/esm/commands/includes/cleanList.lua +50 -0
- package/dist/esm/commands/includes/cleanSet.lua +50 -0
- package/dist/esm/commands/includes/collectMetrics.lua +46 -0
- package/dist/esm/commands/includes/destructureJobKey.lua +12 -0
- package/dist/esm/commands/includes/getNextDelayedTimestamp.lua +13 -0
- package/dist/esm/commands/includes/getTargetQueueList.lua +12 -0
- package/dist/esm/commands/includes/getTimestamp.lua +19 -0
- package/dist/esm/commands/includes/getZSetItems.lua +7 -0
- package/dist/esm/commands/includes/isLocked.lua +31 -0
- package/dist/esm/commands/includes/moveJobFromWaitToActive.lua +84 -0
- package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
- package/dist/esm/commands/includes/promoteDelayedJobs.lua +49 -0
- package/dist/esm/commands/includes/removeJob.lua +13 -0
- package/dist/esm/commands/includes/removeJobFromAnyState.lua +26 -0
- package/dist/esm/commands/includes/removeJobs.lua +38 -0
- package/dist/esm/commands/includes/removeJobsByMaxAge.lua +15 -0
- package/dist/esm/commands/includes/removeJobsByMaxCount.lua +15 -0
- package/dist/esm/commands/includes/removeParentDependencyKey.lua +81 -0
- package/dist/esm/commands/includes/trimEvents.lua +12 -0
- package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +28 -0
- package/dist/esm/commands/isFinished-3.lua +48 -0
- package/dist/esm/commands/isJobInList-1.lua +16 -0
- package/dist/esm/commands/moveStalledJobsToWait-8.lua +24 -0
- package/dist/esm/commands/moveToActive-9.lua +67 -0
- package/dist/esm/commands/moveToDelayed-5.lua +54 -0
- package/dist/esm/commands/moveToFinished-12.lua +201 -0
- package/dist/esm/commands/moveToWaitingChildren-4.lua +62 -0
- package/dist/esm/commands/obliterate-2.lua +94 -0
- package/dist/esm/commands/pause-4.lua +27 -0
- package/dist/esm/commands/promote-6.lua +59 -0
- package/dist/esm/commands/releaseLock-1.lua +19 -0
- package/dist/esm/commands/removeJob-1.lua +72 -0
- package/dist/esm/commands/removeRepeatable-2.lua +32 -0
- package/dist/esm/commands/reprocessJob-4.lua +35 -0
- package/dist/esm/commands/retryJob-6.lua +51 -0
- package/dist/esm/commands/retryJobs-6.lua +53 -0
- package/dist/esm/commands/takeLock-1.lua +17 -0
- package/dist/esm/commands/updateData-1.lua +16 -0
- package/dist/esm/commands/updateProgress-2.lua +22 -0
- package/dist/esm/scripts/moveToFinished-12.js +5 -2
- package/dist/esm/scripts/moveToFinished-12.js.map +1 -1
- package/package.json +2 -2
@@ -0,0 +1,72 @@
|
|
1
|
+
--[[
|
2
|
+
Remove a job from all the queues it may be in as well as all its data.
|
3
|
+
In order to be able to remove a job, it cannot be active.
|
4
|
+
|
5
|
+
Input:
|
6
|
+
KEYS[1] queue prefix
|
7
|
+
ARGV[1] jobId
|
8
|
+
|
9
|
+
Events:
|
10
|
+
'removed'
|
11
|
+
]]
|
12
|
+
|
13
|
+
local rcall = redis.call
|
14
|
+
|
15
|
+
-- Includes
|
16
|
+
--- @include "includes/destructureJobKey"
|
17
|
+
--- @include "includes/isLocked"
|
18
|
+
--- @include "includes/removeJobFromAnyState"
|
19
|
+
--- @include "includes/removeParentDependencyKey"
|
20
|
+
|
21
|
+
local function removeJob( prefix, jobId, parentKey)
|
22
|
+
local jobKey = prefix .. jobId;
|
23
|
+
|
24
|
+
removeParentDependencyKey(jobKey, false, parentKey)
|
25
|
+
|
26
|
+
-- Check if this job has children
|
27
|
+
-- If so, we are going to try to remove the children recursively in deep first way because
|
28
|
+
-- if some job is locked we must exit with and error.
|
29
|
+
--local countProcessed = rcall("HLEN", jobKey .. ":processed")
|
30
|
+
local processed = rcall("HGETALL", jobKey .. ":processed")
|
31
|
+
|
32
|
+
if (#processed > 0) then
|
33
|
+
for i = 1, #processed, 2 do
|
34
|
+
local childJobId = getJobIdFromKey(processed[i])
|
35
|
+
local childJobPrefix = getJobKeyPrefix(processed[i], childJobId)
|
36
|
+
removeJob( childJobPrefix, childJobId, jobKey )
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
|
41
|
+
if (#dependencies > 0) then
|
42
|
+
for i, childJobKey in ipairs(dependencies) do
|
43
|
+
-- We need to get the jobId for this job.
|
44
|
+
local childJobId = getJobIdFromKey(childJobKey)
|
45
|
+
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
|
46
|
+
removeJob( childJobPrefix, childJobId, jobKey )
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
local prev = removeJobFromAnyState(prefix, jobId)
|
51
|
+
|
52
|
+
rcall("ZREM", prefix .. "priority", jobId)
|
53
|
+
rcall("DEL", jobKey, jobKey .. ":logs", jobKey .. ":dependencies", jobKey .. ":processed")
|
54
|
+
|
55
|
+
-- -- delete keys related to rate limiter
|
56
|
+
-- local limiterIndexTable = KEYS[10] .. ":index"
|
57
|
+
-- local limitedSetKey = rcall("HGET", limiterIndexTable, jobId)
|
58
|
+
-- if limitedSetKey then
|
59
|
+
-- rcall("SREM", limitedSetKey, jobId)
|
60
|
+
-- rcall("HDEL", limiterIndexTable, jobId)
|
61
|
+
-- end
|
62
|
+
|
63
|
+
rcall("XADD", prefix .. "events", "*", "event", "removed", "jobId", jobId, "prev", prev);
|
64
|
+
end
|
65
|
+
|
66
|
+
local prefix = KEYS[1]
|
67
|
+
|
68
|
+
if not isLocked(prefix, ARGV[1]) then
|
69
|
+
removeJob(prefix, ARGV[1])
|
70
|
+
return 1
|
71
|
+
end
|
72
|
+
return 0
|
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
--[[
|
3
|
+
Removes a repeatable job
|
4
|
+
Input:
|
5
|
+
KEYS[1] repeat jobs key
|
6
|
+
KEYS[2] delayed jobs key
|
7
|
+
|
8
|
+
ARGV[1] repeat job id
|
9
|
+
ARGV[2] repeat job key
|
10
|
+
ARGV[3] queue key
|
11
|
+
|
12
|
+
Output:
|
13
|
+
0 - OK
|
14
|
+
1 - Missing repeat job
|
15
|
+
]]
|
16
|
+
local rcall = redis.call
|
17
|
+
local millis = rcall("ZSCORE", KEYS[1], ARGV[2])
|
18
|
+
|
19
|
+
if(millis) then
|
20
|
+
-- Delete next programmed job.
|
21
|
+
local repeatJobId = ARGV[1] .. millis
|
22
|
+
if(rcall("ZREM", KEYS[2], repeatJobId) == 1) then
|
23
|
+
rcall("DEL", ARGV[3] .. repeatJobId)
|
24
|
+
rcall("XADD", ARGV[3] .. "events", "*", "event", "removed", "jobId", repeatJobId, "prev", "delayed");
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
if(rcall("ZREM", KEYS[1], ARGV[2]) == 1) then
|
29
|
+
return 0
|
30
|
+
end
|
31
|
+
|
32
|
+
return 1
|
@@ -0,0 +1,35 @@
|
|
1
|
+
--[[
|
2
|
+
Attempts to reprocess a job
|
3
|
+
|
4
|
+
Input:
|
5
|
+
KEYS[1] job key
|
6
|
+
KEYS[2] events stream
|
7
|
+
KEYS[3] job state
|
8
|
+
KEYS[4] wait key
|
9
|
+
|
10
|
+
ARGV[1] job.id
|
11
|
+
ARGV[2] (job.opts.lifo ? 'R' : 'L') + 'PUSH'
|
12
|
+
ARGV[3] propVal - failedReason/returnvalue
|
13
|
+
ARGV[4] prev state - failed/completed
|
14
|
+
|
15
|
+
Output:
|
16
|
+
1 means the operation was a success
|
17
|
+
-1 means the job does not exist
|
18
|
+
-3 means the job was not found in the expected set.
|
19
|
+
]]
|
20
|
+
local rcall = redis.call;
|
21
|
+
if (rcall("EXISTS", KEYS[1]) == 1) then
|
22
|
+
local jobId = ARGV[1]
|
23
|
+
if (rcall("ZREM", KEYS[3], jobId) == 1) then
|
24
|
+
rcall(ARGV[2], KEYS[4], jobId)
|
25
|
+
rcall("HDEL", KEYS[1], "finishedOn", "processedOn", ARGV[3])
|
26
|
+
|
27
|
+
-- Emit waiting event
|
28
|
+
rcall("XADD", KEYS[2], "*", "event", "waiting", "jobId", jobId, "prev", ARGV[4]);
|
29
|
+
return 1
|
30
|
+
else
|
31
|
+
return -3
|
32
|
+
end
|
33
|
+
else
|
34
|
+
return -1
|
35
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
--[[
|
2
|
+
Retries a failed job by moving it back to the wait queue.
|
3
|
+
|
4
|
+
Input:
|
5
|
+
KEYS[1] 'active',
|
6
|
+
KEYS[2] 'wait'
|
7
|
+
KEYS[3] 'paused'
|
8
|
+
KEYS[4] job key
|
9
|
+
KEYS[5] 'meta'
|
10
|
+
KEYS[6] events stream
|
11
|
+
|
12
|
+
ARGV[1] pushCmd
|
13
|
+
ARGV[2] jobId
|
14
|
+
ARGV[3] token
|
15
|
+
|
16
|
+
Events:
|
17
|
+
'waiting'
|
18
|
+
|
19
|
+
Output:
|
20
|
+
0 - OK
|
21
|
+
-1 - Missing key
|
22
|
+
-2 - Missing lock
|
23
|
+
]]
|
24
|
+
local rcall = redis.call
|
25
|
+
|
26
|
+
-- Includes
|
27
|
+
--- @include "includes/getTargetQueueList"
|
28
|
+
|
29
|
+
if rcall("EXISTS", KEYS[4]) == 1 then
|
30
|
+
|
31
|
+
if ARGV[3] ~= "0" then
|
32
|
+
local lockKey = KEYS[4] .. ':lock'
|
33
|
+
if rcall("GET", lockKey) == ARGV[3] then
|
34
|
+
rcall("DEL", lockKey)
|
35
|
+
else
|
36
|
+
return -2
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
local target = getTargetQueueList(KEYS[5], KEYS[2], KEYS[3])
|
41
|
+
|
42
|
+
rcall("LREM", KEYS[1], 0, ARGV[2])
|
43
|
+
rcall(ARGV[1], target, ARGV[2])
|
44
|
+
|
45
|
+
-- Emit waiting event
|
46
|
+
rcall("XADD", KEYS[6], "*", "event", "waiting", "jobId", ARGV[2], "prev", "failed");
|
47
|
+
|
48
|
+
return 0
|
49
|
+
else
|
50
|
+
return -1
|
51
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
--[[
|
2
|
+
Attempts to retry all failed jobs
|
3
|
+
|
4
|
+
Input:
|
5
|
+
KEYS[1] base key
|
6
|
+
KEYS[2] events stream
|
7
|
+
KEYS[3] state key (failed, completed)
|
8
|
+
KEYS[4] 'wait'
|
9
|
+
KEYS[5] 'paused'
|
10
|
+
KEYS[6] 'meta'
|
11
|
+
|
12
|
+
ARGV[1] count
|
13
|
+
ARGV[2] timestamp
|
14
|
+
ARGV[3] prev state
|
15
|
+
|
16
|
+
Output:
|
17
|
+
1 means the operation is not completed
|
18
|
+
0 means the operation is completed
|
19
|
+
]]
|
20
|
+
local maxCount = tonumber(ARGV[1])
|
21
|
+
local timestamp = tonumber(ARGV[2])
|
22
|
+
|
23
|
+
local rcall = redis.call;
|
24
|
+
|
25
|
+
-- Includes
|
26
|
+
--- @include "includes/batches"
|
27
|
+
--- @include "includes/getTargetQueueList"
|
28
|
+
|
29
|
+
local target = getTargetQueueList(KEYS[6], KEYS[4], KEYS[5])
|
30
|
+
|
31
|
+
local jobs = rcall('ZRANGEBYSCORE', KEYS[3], 0, timestamp, 'LIMIT', 0, maxCount)
|
32
|
+
if (#jobs > 0) then
|
33
|
+
for i, key in ipairs(jobs) do
|
34
|
+
local jobKey = KEYS[1] .. key
|
35
|
+
rcall("HDEL", jobKey, "finishedOn", "processedOn", "failedReason", "returnvalue")
|
36
|
+
|
37
|
+
-- Emit waiting event
|
38
|
+
rcall("XADD", KEYS[2], "*", "event", "waiting", "jobId", key, "prev", ARGV[3]);
|
39
|
+
end
|
40
|
+
|
41
|
+
for from, to in batches(#jobs, 7000) do
|
42
|
+
rcall("ZREM", KEYS[3], unpack(jobs, from, to))
|
43
|
+
rcall("LPUSH", target, unpack(jobs, from, to))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
maxCount = maxCount - #jobs
|
48
|
+
|
49
|
+
if(maxCount <= 0) then
|
50
|
+
return 1
|
51
|
+
end
|
52
|
+
|
53
|
+
return 0
|
@@ -0,0 +1,17 @@
|
|
1
|
+
--[[
|
2
|
+
Takes a lock
|
3
|
+
|
4
|
+
Input:
|
5
|
+
KEYS[1] 'lock',
|
6
|
+
|
7
|
+
ARGV[1] token
|
8
|
+
ARGV[2] lock duration in milliseconds
|
9
|
+
|
10
|
+
Output:
|
11
|
+
"OK" if lock extented succesfully.
|
12
|
+
]]
|
13
|
+
if redis.call("SET", KEYS[1], ARGV[1], "NX", "PX", ARGV[2]) then
|
14
|
+
return 1
|
15
|
+
else
|
16
|
+
return 0
|
17
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
--[[
|
2
|
+
Update job data
|
3
|
+
|
4
|
+
Input:
|
5
|
+
KEYS[1] Job id key
|
6
|
+
|
7
|
+
ARGV[1] data
|
8
|
+
]]
|
9
|
+
local rcall = redis.call
|
10
|
+
|
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
|
@@ -0,0 +1,22 @@
|
|
1
|
+
--[[
|
2
|
+
Update job progress
|
3
|
+
|
4
|
+
Input:
|
5
|
+
KEYS[1] Job id key
|
6
|
+
KEYS[2] event stream key
|
7
|
+
|
8
|
+
ARGV[1] id
|
9
|
+
ARGV[2] progress
|
10
|
+
|
11
|
+
Event:
|
12
|
+
progress(jobId, progress)
|
13
|
+
]]
|
14
|
+
local rcall = redis.call
|
15
|
+
|
16
|
+
if rcall("EXISTS",KEYS[1]) == 1 then -- // Make sure job exists
|
17
|
+
rcall("HSET", KEYS[1], "progress", ARGV[2])
|
18
|
+
rcall("XADD", KEYS[2], "*", "event", "progress", "jobId", ARGV[1], "data", ARGV[2]);
|
19
|
+
return 0
|
20
|
+
else
|
21
|
+
return -1
|
22
|
+
end
|
@@ -187,10 +187,13 @@ end
|
|
187
187
|
--[[
|
188
188
|
Function to recursively move from waitingChildren to failed.
|
189
189
|
]]
|
190
|
-
local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId,
|
190
|
+
local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
|
191
191
|
if rcall("ZREM", parentQueueKey .. ":waiting-children", parentId) == 1 then
|
192
192
|
rcall("ZADD", parentQueueKey .. ":failed", timestamp, parentId)
|
193
|
-
|
193
|
+
local failedReason = "child " .. jobIdKey .. " failed"
|
194
|
+
rcall("HMSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
|
195
|
+
rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
|
196
|
+
failedReason, "prev", "waiting-children")
|
194
197
|
local rawParentData = rcall("HGET", parentKey, "parent")
|
195
198
|
if rawParentData ~= false then
|
196
199
|
local parentData = cjson.decode(rawParentData)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"moveToFinished-12.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-12.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"moveToFinished-12.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-12.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmhBf,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
|
@@ -128,7 +128,7 @@ export class RedisConnection extends EventEmitter {
|
|
128
128
|
throw new Error(`Redis version needs to be greater than ${RedisConnection.minimumVersion} Current: ${this.version}`);
|
129
129
|
}
|
130
130
|
if (isRedisVersionLowerThan(this.version, RedisConnection.recommendedMinimumVersion)) {
|
131
|
-
console.warn(`It is highly
|
131
|
+
console.warn(`It is highly recommended to use a minimum Redis version of ${RedisConnection.recommendedMinimumVersion}
|
132
132
|
Current: ${this.version}`);
|
133
133
|
}
|
134
134
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"redis-connection.js","sourceRoot":"","sources":["../../../src/classes/redis-connection.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"redis-connection.js","sourceRoot":"","sources":["../../../src/classes/redis-connection.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,174 @@
|
|
1
|
+
--[[
|
2
|
+
Adds a job to the queue by doing the following:
|
3
|
+
- Increases the job counter if needed.
|
4
|
+
- Creates a new job key with the job data.
|
5
|
+
|
6
|
+
- if delayed:
|
7
|
+
- computes timestamp.
|
8
|
+
- adds to delayed zset.
|
9
|
+
- Emits a global event 'delayed' if the job is delayed.
|
10
|
+
- if not delayed
|
11
|
+
- Adds the jobId to the wait/paused list in one of three ways:
|
12
|
+
- LIFO
|
13
|
+
- FIFO
|
14
|
+
- prioritized.
|
15
|
+
- Adds the job to the "added" list so that workers gets notified.
|
16
|
+
|
17
|
+
Input:
|
18
|
+
KEYS[1] 'wait',
|
19
|
+
KEYS[2] 'paused'
|
20
|
+
KEYS[3] 'meta'
|
21
|
+
KEYS[4] 'id'
|
22
|
+
KEYS[5] 'delayed'
|
23
|
+
KEYS[6] 'priority'
|
24
|
+
KEYS[7] 'completed'
|
25
|
+
KEYS[8] events stream key
|
26
|
+
|
27
|
+
ARGV[1] msgpacked arguments array
|
28
|
+
[1] key prefix,
|
29
|
+
[2] custom id (will not generate one automatically)
|
30
|
+
[3] name
|
31
|
+
[4] timestamp
|
32
|
+
[5] parentKey?
|
33
|
+
[6] waitChildrenKey key.
|
34
|
+
[7] parent dependencies key.
|
35
|
+
[8] parent? {id, queueKey}
|
36
|
+
[9] repeat job key
|
37
|
+
|
38
|
+
ARGV[2] Json stringified job data
|
39
|
+
ARGV[3] msgpacked options
|
40
|
+
|
41
|
+
Output:
|
42
|
+
jobId - OK
|
43
|
+
-5 - Missing parent key
|
44
|
+
]]
|
45
|
+
local jobId
|
46
|
+
local jobIdKey
|
47
|
+
local rcall = redis.call
|
48
|
+
|
49
|
+
local args = cmsgpack.unpack(ARGV[1])
|
50
|
+
|
51
|
+
local data = ARGV[2]
|
52
|
+
local opts = cmsgpack.unpack(ARGV[3])
|
53
|
+
|
54
|
+
local parentKey = args[5]
|
55
|
+
local repeatJobKey = args[9]
|
56
|
+
local parent = args[8]
|
57
|
+
local parentData
|
58
|
+
|
59
|
+
-- Includes
|
60
|
+
--- @include "includes/addJobWithPriority"
|
61
|
+
--- @include "includes/getTargetQueueList"
|
62
|
+
--- @include "includes/trimEvents"
|
63
|
+
--- @include "includes/getNextDelayedTimestamp"
|
64
|
+
|
65
|
+
if parentKey ~= nil then
|
66
|
+
if rcall("EXISTS", parentKey) ~= 1 then
|
67
|
+
return -5
|
68
|
+
end
|
69
|
+
|
70
|
+
parentData = cjson.encode(parent)
|
71
|
+
end
|
72
|
+
|
73
|
+
local jobCounter = rcall("INCR", KEYS[4])
|
74
|
+
|
75
|
+
-- Includes
|
76
|
+
--- @include "includes/updateParentDepsIfNeeded"
|
77
|
+
|
78
|
+
-- Trim events before emiting them to avoid trimming events emitted in this script
|
79
|
+
trimEvents(KEYS[3], KEYS[8])
|
80
|
+
|
81
|
+
local parentDependenciesKey = args[7]
|
82
|
+
if args[2] == "" then
|
83
|
+
jobId = jobCounter
|
84
|
+
jobIdKey = args[1] .. jobId
|
85
|
+
else
|
86
|
+
jobId = args[2]
|
87
|
+
jobIdKey = args[1] .. jobId
|
88
|
+
if rcall("EXISTS", jobIdKey) == 1 then
|
89
|
+
if parentKey ~= nil then
|
90
|
+
if rcall("ZSCORE", KEYS[7], jobId) ~= false then
|
91
|
+
local returnvalue = rcall("HGET", jobIdKey, "returnvalue")
|
92
|
+
updateParentDepsIfNeeded(parentKey, parent['queueKey'], parentDependenciesKey,
|
93
|
+
parent['id'], jobIdKey, returnvalue)
|
94
|
+
else
|
95
|
+
if parentDependenciesKey ~= nil then
|
96
|
+
rcall("SADD", parentDependenciesKey, jobIdKey)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
rcall("HMSET", jobIdKey, "parentKey", parentKey, "parent", parentData)
|
100
|
+
end
|
101
|
+
return jobId .. "" -- convert to string
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
-- Store the job.
|
106
|
+
local jsonOpts = cjson.encode(opts)
|
107
|
+
local delay = opts['delay'] or 0
|
108
|
+
local priority = opts['priority'] or 0
|
109
|
+
local timestamp = args[4]
|
110
|
+
|
111
|
+
local optionalValues = {}
|
112
|
+
if parentKey ~= nil then
|
113
|
+
table.insert(optionalValues, "parentKey")
|
114
|
+
table.insert(optionalValues, parentKey)
|
115
|
+
table.insert(optionalValues, "parent")
|
116
|
+
table.insert(optionalValues, parentData)
|
117
|
+
end
|
118
|
+
|
119
|
+
if repeatJobKey ~= nil then
|
120
|
+
table.insert(optionalValues, "rjk")
|
121
|
+
table.insert(optionalValues, repeatJobKey)
|
122
|
+
end
|
123
|
+
|
124
|
+
rcall("HMSET", jobIdKey, "name", args[3], "data", ARGV[2], "opts", jsonOpts,
|
125
|
+
"timestamp", timestamp, "delay", delay, "priority", priority, unpack(optionalValues))
|
126
|
+
|
127
|
+
rcall("XADD", KEYS[8], "*", "event", "added", "jobId", jobId, "name", args[3])
|
128
|
+
|
129
|
+
-- Check if job is delayed
|
130
|
+
local delayedTimestamp = (delay > 0 and (timestamp + delay)) or 0
|
131
|
+
|
132
|
+
-- Check if job is a parent, if so add to the parents set
|
133
|
+
local waitChildrenKey = args[6]
|
134
|
+
if waitChildrenKey ~= nil then
|
135
|
+
rcall("ZADD", waitChildrenKey, timestamp, jobId)
|
136
|
+
rcall("XADD", KEYS[8], "*", "event", "waiting-children", "jobId", jobId)
|
137
|
+
elseif (delayedTimestamp ~= 0) then
|
138
|
+
local timestamp = delayedTimestamp * 0x1000 + bit.band(jobCounter, 0xfff)
|
139
|
+
rcall("ZADD", KEYS[5], timestamp, jobId)
|
140
|
+
rcall("XADD", KEYS[8], "*", "event", "delayed", "jobId", jobId, "delay",
|
141
|
+
delayedTimestamp)
|
142
|
+
-- If wait list is empty, and this delayed job is the next one to be processed,
|
143
|
+
-- then we need to signal the workers by adding a dummy job (jobId 0) to the wait list.
|
144
|
+
local target = getTargetQueueList(KEYS[3], KEYS[1], KEYS[2])
|
145
|
+
if rcall("LLEN", target) == 0 then
|
146
|
+
local nextTimestamp = getNextDelayedTimestamp(KEYS[5])
|
147
|
+
if delayedTimestamp < nextTimestamp then
|
148
|
+
rcall("LPUSH", target, 0)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
else
|
152
|
+
local target = getTargetQueueList(KEYS[3], KEYS[1], KEYS[2])
|
153
|
+
|
154
|
+
-- Standard or priority add
|
155
|
+
if priority == 0 then
|
156
|
+
-- LIFO or FIFO
|
157
|
+
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH';
|
158
|
+
rcall(pushCmd, target, jobId)
|
159
|
+
else
|
160
|
+
-- Priority add
|
161
|
+
addJobWithPriority(KEYS[6], priority, target, jobId)
|
162
|
+
end
|
163
|
+
-- Emit waiting event
|
164
|
+
rcall("XADD", KEYS[8], "*", "event", "waiting", "jobId", jobId)
|
165
|
+
end
|
166
|
+
|
167
|
+
-- Check if this job is a child of another job, if so add it to the parents dependencies
|
168
|
+
-- TODO: Should not be possible to add a child job to a parent that is not in the "waiting-children" status.
|
169
|
+
-- fail in this case.
|
170
|
+
if parentDependenciesKey ~= nil then
|
171
|
+
rcall("SADD", parentDependenciesKey, jobIdKey)
|
172
|
+
end
|
173
|
+
|
174
|
+
return jobId .. "" -- convert to string
|
@@ -0,0 +1,43 @@
|
|
1
|
+
--[[
|
2
|
+
Change job delay when it is in delayed set.
|
3
|
+
Input:
|
4
|
+
KEYS[1] delayed key
|
5
|
+
KEYS[2] job key
|
6
|
+
KEYS[3] events stream
|
7
|
+
KEYS[4] delayed stream
|
8
|
+
|
9
|
+
ARGV[1] delay
|
10
|
+
ARGV[2] delayedTimestamp
|
11
|
+
ARGV[3] the id of the job
|
12
|
+
Output:
|
13
|
+
0 - OK
|
14
|
+
-1 - Missing job.
|
15
|
+
-3 - Job not in delayed set.
|
16
|
+
|
17
|
+
Events:
|
18
|
+
- delayed key.
|
19
|
+
]]
|
20
|
+
local rcall = redis.call
|
21
|
+
|
22
|
+
if rcall("EXISTS", KEYS[2]) == 1 then
|
23
|
+
|
24
|
+
local jobId = ARGV[3]
|
25
|
+
local score = tonumber(ARGV[2])
|
26
|
+
local delayedTimestamp = (score / 0x1000)
|
27
|
+
|
28
|
+
local numRemovedElements = rcall("ZREM", KEYS[1], jobId)
|
29
|
+
|
30
|
+
if (numRemovedElements < 1) then
|
31
|
+
return -3
|
32
|
+
end
|
33
|
+
|
34
|
+
rcall("HSET", KEYS[2], "delay", tonumber(ARGV[1]))
|
35
|
+
rcall("ZADD", KEYS[1], score, jobId)
|
36
|
+
|
37
|
+
rcall("XADD", KEYS[3], "*", "event", "delayed", "jobId", jobId, "delay", delayedTimestamp);
|
38
|
+
rcall("XADD", KEYS[4], "*", "nextTimestamp", delayedTimestamp);
|
39
|
+
|
40
|
+
return 0
|
41
|
+
else
|
42
|
+
return -1
|
43
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
--[[
|
2
|
+
Remove jobs from the specific set.
|
3
|
+
|
4
|
+
Input:
|
5
|
+
KEYS[1] set key,
|
6
|
+
KEYS[2] events stream key
|
7
|
+
|
8
|
+
ARGV[1] jobKey prefix
|
9
|
+
ARGV[2] timestamp
|
10
|
+
ARGV[3] limit the number of jobs to be removed. 0 is unlimited
|
11
|
+
ARGV[4] set name, can be any of 'wait', 'active', 'paused', 'delayed', 'completed', or 'failed'
|
12
|
+
]]
|
13
|
+
local rcall = redis.call
|
14
|
+
local rangeStart = 0
|
15
|
+
local rangeEnd = -1
|
16
|
+
|
17
|
+
local limit = tonumber(ARGV[3])
|
18
|
+
|
19
|
+
-- If we're only deleting _n_ items, avoid retrieving all items
|
20
|
+
-- for faster performance
|
21
|
+
--
|
22
|
+
-- Start from the tail of the list, since that's where oldest elements
|
23
|
+
-- are generally added for FIFO lists
|
24
|
+
if limit > 0 then
|
25
|
+
rangeStart = -1 - limit + 1
|
26
|
+
rangeEnd = -1
|
27
|
+
end
|
28
|
+
|
29
|
+
-- Includes
|
30
|
+
--- @include "includes/cleanList"
|
31
|
+
--- @include "includes/cleanSet"
|
32
|
+
|
33
|
+
local result
|
34
|
+
if ARGV[4] == "active" then
|
35
|
+
result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], false)
|
36
|
+
elseif ARGV[4] == "delayed" then
|
37
|
+
result = cleanSet(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], limit, {"processedOn", "timestamp"})
|
38
|
+
elseif ARGV[4] == "wait" or ARGV[4] == "paused" then
|
39
|
+
result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], true)
|
40
|
+
else
|
41
|
+
result = cleanSet(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], limit, {"finishedOn"} )
|
42
|
+
end
|
43
|
+
|
44
|
+
rcall("XADD", KEYS[2], "*", "event", "cleaned", "count", result[2])
|
45
|
+
|
46
|
+
return result[1]
|
@@ -0,0 +1,25 @@
|
|
1
|
+
--[[
|
2
|
+
Drains the queue, removes all jobs that are waiting
|
3
|
+
or delayed, but not active, completed or failed
|
4
|
+
|
5
|
+
Input:
|
6
|
+
KEYS[1] 'wait',
|
7
|
+
KEYS[2] 'paused'
|
8
|
+
KEYS[3] 'delayed'
|
9
|
+
KEYS[4] 'priority'
|
10
|
+
|
11
|
+
ARGV[1] queue key prefix
|
12
|
+
]]
|
13
|
+
local rcall = redis.call
|
14
|
+
local queueBaseKey = ARGV[1]
|
15
|
+
|
16
|
+
--- @include "includes/removeJobs"
|
17
|
+
|
18
|
+
removeListJobs(KEYS[1], true, queueBaseKey, 0) --wait
|
19
|
+
removeListJobs(KEYS[2], true, queueBaseKey, 0) --paused
|
20
|
+
|
21
|
+
if KEYS[3] ~= "" then
|
22
|
+
removeZSetJobs(KEYS[3], true, queueBaseKey, 0) --delayed
|
23
|
+
end
|
24
|
+
|
25
|
+
rcall("DEL", KEYS[4])
|