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
@@ -0,0 +1,238 @@
|
|
1
|
+
const content = `--[[
|
2
|
+
Completely obliterates a queue and all of its contents
|
3
|
+
Input:
|
4
|
+
KEYS[1] meta
|
5
|
+
KEYS[2] base
|
6
|
+
ARGV[1] count
|
7
|
+
ARGV[2] force
|
8
|
+
]]
|
9
|
+
-- This command completely destroys a queue including all of its jobs, current or past
|
10
|
+
-- leaving no trace of its existence. Since this script needs to iterate to find all the job
|
11
|
+
-- keys, consider that this call may be slow for very large queues.
|
12
|
+
-- The queue needs to be "paused" or it will return an error
|
13
|
+
-- If the queue has currently active jobs then the script by default will return error,
|
14
|
+
-- however this behaviour can be overrided using the 'force' option.
|
15
|
+
local maxCount = tonumber(ARGV[1])
|
16
|
+
local baseKey = KEYS[2]
|
17
|
+
local rcall = redis.call
|
18
|
+
--[[
|
19
|
+
Functions to remove jobs.
|
20
|
+
]]
|
21
|
+
-- Includes
|
22
|
+
--[[
|
23
|
+
Function to loop in batches.
|
24
|
+
Just a bit of warning, some commands as ZREM
|
25
|
+
could receive a maximum of 7000 parameters per call.
|
26
|
+
]]
|
27
|
+
local function batches(n, batchSize)
|
28
|
+
local i = 0
|
29
|
+
return function()
|
30
|
+
local from = i * batchSize + 1
|
31
|
+
i = i + 1
|
32
|
+
if (from <= n) then
|
33
|
+
local to = math.min(from + batchSize - 1, n)
|
34
|
+
return from, to
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
local function getListItems(keyName, max)
|
39
|
+
return rcall('LRANGE', keyName, 0, max - 1)
|
40
|
+
end
|
41
|
+
--[[
|
42
|
+
Function to get ZSet items.
|
43
|
+
]]
|
44
|
+
local function getZSetItems(keyName, max)
|
45
|
+
return rcall('ZRANGE', keyName, 0, max - 1)
|
46
|
+
end
|
47
|
+
--[[
|
48
|
+
Function to remove job.
|
49
|
+
]]
|
50
|
+
-- Includes
|
51
|
+
--[[
|
52
|
+
Check if this job has a parent. If so we will just remove it from
|
53
|
+
the parent child list, but if it is the last child we should move the parent to "wait/paused"
|
54
|
+
which requires code from "moveToFinished"
|
55
|
+
]]
|
56
|
+
--[[
|
57
|
+
Functions to destructure job key.
|
58
|
+
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
|
59
|
+
]]
|
60
|
+
local getJobIdFromKey = function (jobKey)
|
61
|
+
return string.match(jobKey, ".*:(.*)")
|
62
|
+
end
|
63
|
+
local getJobKeyPrefix = function (jobKey, jobId)
|
64
|
+
return string.sub(jobKey, 0, #jobKey - #jobId)
|
65
|
+
end
|
66
|
+
--[[
|
67
|
+
Function to check for the meta.paused key to decide if we are paused or not
|
68
|
+
(since an empty list and !EXISTS are not really the same).
|
69
|
+
]]
|
70
|
+
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
71
|
+
if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
|
72
|
+
return waitKey
|
73
|
+
else
|
74
|
+
return pausedKey
|
75
|
+
end
|
76
|
+
end
|
77
|
+
local function moveParentToWait(parentPrefix, parentId, emitEvent)
|
78
|
+
local parentTarget = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "wait", parentPrefix .. "paused")
|
79
|
+
rcall("RPUSH", parentTarget, parentId)
|
80
|
+
if emitEvent then
|
81
|
+
local parentEventStream = parentPrefix .. "events"
|
82
|
+
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey)
|
86
|
+
if parentKey then
|
87
|
+
local parentProcessedKey = parentKey .. ":processed"
|
88
|
+
rcall("HDEL", parentProcessedKey, jobKey)
|
89
|
+
local parentDependenciesKey = parentKey .. ":dependencies"
|
90
|
+
local result = rcall("SREM", parentDependenciesKey, jobKey)
|
91
|
+
if result > 0 then
|
92
|
+
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
|
93
|
+
if pendingDependencies == 0 then
|
94
|
+
local parentId = getJobIdFromKey(parentKey)
|
95
|
+
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
|
96
|
+
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
|
97
|
+
if numRemovedElements == 1 then
|
98
|
+
if hard then
|
99
|
+
if parentPrefix == baseKey then
|
100
|
+
removeParentDependencyKey(parentKey, hard, nil, baseKey)
|
101
|
+
rcall("DEL", parentKey, parentKey .. ':logs',
|
102
|
+
parentKey .. ':dependencies', parentKey .. ':processed')
|
103
|
+
else
|
104
|
+
moveParentToWait(parentPrefix, parentId)
|
105
|
+
end
|
106
|
+
else
|
107
|
+
moveParentToWait(parentPrefix, parentId, true)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
else
|
113
|
+
local missedParentKey = rcall("HGET", jobKey, "parentKey")
|
114
|
+
if( (type(missedParentKey) == "string") and missedParentKey ~= "" and (rcall("EXISTS", missedParentKey) == 1)) then
|
115
|
+
local parentProcessedKey = missedParentKey .. ":processed"
|
116
|
+
rcall("HDEL", parentProcessedKey, jobKey)
|
117
|
+
local parentDependenciesKey = missedParentKey .. ":dependencies"
|
118
|
+
local result = rcall("SREM", parentDependenciesKey, jobKey)
|
119
|
+
if result > 0 then
|
120
|
+
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
|
121
|
+
if pendingDependencies == 0 then
|
122
|
+
local parentId = getJobIdFromKey(missedParentKey)
|
123
|
+
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
|
124
|
+
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
|
125
|
+
if numRemovedElements == 1 then
|
126
|
+
if hard then
|
127
|
+
if parentPrefix == baseKey then
|
128
|
+
removeParentDependencyKey(missedParentKey, hard, nil, baseKey)
|
129
|
+
rcall("DEL", missedParentKey, missedParentKey .. ':logs',
|
130
|
+
missedParentKey .. ':dependencies', missedParentKey .. ':processed')
|
131
|
+
else
|
132
|
+
moveParentToWait(parentPrefix, parentId)
|
133
|
+
end
|
134
|
+
else
|
135
|
+
moveParentToWait(parentPrefix, parentId, true)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
local function removeJob(jobId, hard, baseKey)
|
144
|
+
local jobKey = baseKey .. jobId
|
145
|
+
removeParentDependencyKey(jobKey, hard, nil, baseKey)
|
146
|
+
rcall("DEL", jobKey, jobKey .. ':logs',
|
147
|
+
jobKey .. ':dependencies', jobKey .. ':processed')
|
148
|
+
end
|
149
|
+
local function removeJobs(keys, hard, baseKey, max)
|
150
|
+
for i, key in ipairs(keys) do
|
151
|
+
removeJob(key, hard, baseKey)
|
152
|
+
end
|
153
|
+
return max - #keys
|
154
|
+
end
|
155
|
+
local function removeListJobs(keyName, hard, baseKey, max)
|
156
|
+
local jobs = getListItems(keyName, max)
|
157
|
+
local count = removeJobs(jobs, hard, baseKey, max)
|
158
|
+
rcall("LTRIM", keyName, #jobs, -1)
|
159
|
+
return count
|
160
|
+
end
|
161
|
+
local function removeZSetJobs(keyName, hard, baseKey, max)
|
162
|
+
local jobs = getZSetItems(keyName, max)
|
163
|
+
local count = removeJobs(jobs, hard, baseKey, max)
|
164
|
+
if(#jobs > 0) then
|
165
|
+
for from, to in batches(#jobs, 7000) do
|
166
|
+
rcall("ZREM", keyName, unpack(jobs))
|
167
|
+
end
|
168
|
+
end
|
169
|
+
return count
|
170
|
+
end
|
171
|
+
local function removeLockKeys(keys)
|
172
|
+
for i, key in ipairs(keys) do
|
173
|
+
rcall("DEL", baseKey .. key .. ':lock')
|
174
|
+
end
|
175
|
+
end
|
176
|
+
-- 1) Check if paused, if not return with error.
|
177
|
+
if rcall("HEXISTS", KEYS[1], "paused") ~= 1 then
|
178
|
+
return -1 -- Error, NotPaused
|
179
|
+
end
|
180
|
+
-- 2) Check if there are active jobs, if there are and not "force" return error.
|
181
|
+
local activeKey = baseKey .. 'active'
|
182
|
+
local activeJobs = getListItems(activeKey, maxCount)
|
183
|
+
if (#activeJobs > 0) then
|
184
|
+
if(ARGV[2] == "") then
|
185
|
+
return -2 -- Error, ExistActiveJobs
|
186
|
+
end
|
187
|
+
end
|
188
|
+
removeLockKeys(activeJobs)
|
189
|
+
maxCount = removeJobs(activeJobs, true, baseKey, maxCount)
|
190
|
+
rcall("LTRIM", activeKey, #activeJobs, -1)
|
191
|
+
if(maxCount <= 0) then
|
192
|
+
return 1
|
193
|
+
end
|
194
|
+
local delayedKey = baseKey .. 'delayed'
|
195
|
+
maxCount = removeZSetJobs(delayedKey, true, baseKey, maxCount)
|
196
|
+
if(maxCount <= 0) then
|
197
|
+
return 1
|
198
|
+
end
|
199
|
+
local completedKey = baseKey .. 'completed'
|
200
|
+
maxCount = removeZSetJobs(completedKey, true, baseKey, maxCount)
|
201
|
+
if(maxCount <= 0) then
|
202
|
+
return 1
|
203
|
+
end
|
204
|
+
local waitKey = baseKey .. 'paused'
|
205
|
+
maxCount = removeListJobs(waitKey, true, baseKey, maxCount)
|
206
|
+
if(maxCount <= 0) then
|
207
|
+
return 1
|
208
|
+
end
|
209
|
+
local failedKey = baseKey .. 'failed'
|
210
|
+
maxCount = removeZSetJobs(failedKey, true, baseKey, maxCount)
|
211
|
+
if(maxCount <= 0) then
|
212
|
+
return 1
|
213
|
+
end
|
214
|
+
if(maxCount > 0) then
|
215
|
+
rcall("DEL",
|
216
|
+
baseKey .. 'priority',
|
217
|
+
baseKey .. 'events',
|
218
|
+
baseKey .. 'delay',
|
219
|
+
baseKey .. 'stalled-check',
|
220
|
+
baseKey .. 'stalled',
|
221
|
+
baseKey .. 'id',
|
222
|
+
baseKey .. 'meta',
|
223
|
+
baseKey .. 'repeat',
|
224
|
+
baseKey .. 'metrics:completed',
|
225
|
+
baseKey .. 'metrics:completed:data',
|
226
|
+
baseKey .. 'metrics:failed',
|
227
|
+
baseKey .. 'metrics:failed:data')
|
228
|
+
return 0
|
229
|
+
else
|
230
|
+
return 1
|
231
|
+
end
|
232
|
+
`;
|
233
|
+
export const obliterate = {
|
234
|
+
name: 'obliterate',
|
235
|
+
content,
|
236
|
+
keys: 2,
|
237
|
+
};
|
238
|
+
//# sourceMappingURL=obliterate-2.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"obliterate-2.js","sourceRoot":"","sources":["../../../src/scripts/obliterate-2.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuOf,CAAC;AACF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,YAAY;IAClB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -1,27 +1,28 @@
|
|
1
|
-
|
1
|
+
const content = `--[[
|
2
2
|
Pauses or resumes a queue globably.
|
3
|
-
|
4
3
|
Input:
|
5
4
|
KEYS[1] 'wait' or 'paused''
|
6
5
|
KEYS[2] 'paused' or 'wait'
|
7
6
|
KEYS[3] 'meta'
|
8
7
|
KEYS[4] events stream key
|
9
|
-
|
10
8
|
ARGV[1] 'paused' or 'resumed'
|
11
|
-
|
12
9
|
Event:
|
13
10
|
publish paused or resumed event.
|
14
11
|
]]
|
15
12
|
local rcall = redis.call
|
16
|
-
|
17
13
|
if rcall("EXISTS", KEYS[1]) == 1 then
|
18
14
|
rcall("RENAME", KEYS[1], KEYS[2])
|
19
15
|
end
|
20
|
-
|
21
16
|
if ARGV[1] == "paused" then
|
22
17
|
rcall("HSET", KEYS[3], "paused", 1)
|
23
18
|
else
|
24
19
|
rcall("HDEL", KEYS[3], "paused")
|
25
20
|
end
|
26
|
-
|
27
21
|
rcall("XADD", KEYS[4], "*", "event", ARGV[1]);
|
22
|
+
`;
|
23
|
+
export const pause = {
|
24
|
+
name: 'pause',
|
25
|
+
content,
|
26
|
+
keys: 4,
|
27
|
+
};
|
28
|
+
//# sourceMappingURL=pause-4.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pause-4.js","sourceRoot":"","sources":["../../../src/scripts/pause-4.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBf,CAAC;AACF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,IAAI,EAAE,OAAO;IACb,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -1,6 +1,5 @@
|
|
1
|
-
|
1
|
+
const content = `--[[
|
2
2
|
Promotes a job that is currently "delayed" to the "waiting" state
|
3
|
-
|
4
3
|
Input:
|
5
4
|
KEYS[1] 'delayed'
|
6
5
|
KEYS[2] 'wait'
|
@@ -8,29 +7,33 @@
|
|
8
7
|
KEYS[4] 'meta'
|
9
8
|
KEYS[5] 'priority'
|
10
9
|
KEYS[6] 'event stream'
|
11
|
-
|
12
10
|
ARGV[1] queue.toKey('')
|
13
11
|
ARGV[2] jobId
|
14
|
-
|
15
12
|
Events:
|
16
13
|
'waiting'
|
17
14
|
]]
|
18
15
|
local rcall = redis.call;
|
19
16
|
local jobId = ARGV[2]
|
20
|
-
|
21
17
|
-- Includes
|
22
|
-
|
23
|
-
|
18
|
+
--[[
|
19
|
+
Function to check for the meta.paused key to decide if we are paused or not
|
20
|
+
(since an empty list and !EXISTS are not really the same).
|
21
|
+
]]
|
22
|
+
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
23
|
+
if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
|
24
|
+
return waitKey
|
25
|
+
else
|
26
|
+
return pausedKey
|
27
|
+
end
|
28
|
+
end
|
24
29
|
if rcall("ZREM", KEYS[1], jobId) == 1 then
|
25
30
|
local priority = tonumber(rcall("HGET", ARGV[1] .. jobId, "priority")) or 0
|
26
31
|
local target = getTargetQueueList(KEYS[4], KEYS[2], KEYS[3])
|
27
|
-
|
28
32
|
-- Remove delayed "marker" from the wait list if there is any.
|
29
33
|
-- Since we are adding a job we do not need the marker anymore.
|
30
34
|
if rcall("LINDEX", target, 0) == "0" then
|
31
35
|
rcall("LPOP", target)
|
32
36
|
end
|
33
|
-
|
34
37
|
if priority == 0 then
|
35
38
|
-- LIFO or FIFO
|
36
39
|
rcall("LPUSH", target, jobId)
|
@@ -38,7 +41,6 @@ if rcall("ZREM", KEYS[1], jobId) == 1 then
|
|
38
41
|
-- Priority add
|
39
42
|
rcall("ZADD", KEYS[5], priority, jobId)
|
40
43
|
local count = rcall("ZCOUNT", KEYS[5], 0, priority)
|
41
|
-
|
42
44
|
local len = rcall("LLEN", target)
|
43
45
|
local id = rcall("LINDEX", target, len - (count - 1))
|
44
46
|
if id then
|
@@ -47,13 +49,16 @@ if rcall("ZREM", KEYS[1], jobId) == 1 then
|
|
47
49
|
rcall("RPUSH", target, jobId)
|
48
50
|
end
|
49
51
|
end
|
50
|
-
|
51
52
|
-- Emit waiting event (wait..ing@token)
|
52
53
|
rcall("XADD", KEYS[6], "*", "event", "waiting", "jobId", jobId, "prev", "delayed");
|
53
|
-
|
54
54
|
rcall("HSET", ARGV[1] .. jobId, "delay", 0)
|
55
|
-
|
56
55
|
return 0
|
57
56
|
else
|
58
57
|
return -3
|
59
|
-
end
|
58
|
+
end`;
|
59
|
+
export const promote = {
|
60
|
+
name: 'promote',
|
61
|
+
content,
|
62
|
+
keys: 6,
|
63
|
+
};
|
64
|
+
//# sourceMappingURL=promote-6.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"promote-6.js","sourceRoot":"","sources":["../../../src/scripts/promote-6.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyDZ,CAAC;AACL,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,SAAS;IACf,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -1,19 +1,22 @@
|
|
1
|
-
|
1
|
+
const content = `--[[
|
2
2
|
Release lock
|
3
|
-
|
4
3
|
Input:
|
5
4
|
KEYS[1] 'lock',
|
6
|
-
|
7
5
|
ARGV[1] token
|
8
6
|
ARGV[2] lock duration in milliseconds
|
9
|
-
|
10
7
|
Output:
|
11
8
|
"OK" if lock extented succesfully.
|
12
9
|
]]
|
13
10
|
local rcall = redis.call
|
14
|
-
|
15
11
|
if rcall("GET", KEYS[1]) == ARGV[1] then
|
16
12
|
return rcall("DEL", KEYS[1])
|
17
13
|
else
|
18
14
|
return 0
|
19
15
|
end
|
16
|
+
`;
|
17
|
+
export const releaseLock = {
|
18
|
+
name: 'releaseLock',
|
19
|
+
content,
|
20
|
+
keys: 1,
|
21
|
+
};
|
22
|
+
//# sourceMappingURL=releaseLock-1.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"releaseLock-1.js","sourceRoot":"","sources":["../../../src/scripts/releaseLock-1.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;CAef,CAAC;AACF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,aAAa;IACnB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -0,0 +1,203 @@
|
|
1
|
+
const content = `--[[
|
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
|
+
Input:
|
5
|
+
KEYS[1] queue prefix
|
6
|
+
ARGV[1] jobId
|
7
|
+
Events:
|
8
|
+
'removed'
|
9
|
+
]]
|
10
|
+
local rcall = redis.call
|
11
|
+
-- Includes
|
12
|
+
--[[
|
13
|
+
Functions to destructure job key.
|
14
|
+
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
|
15
|
+
]]
|
16
|
+
local getJobIdFromKey = function (jobKey)
|
17
|
+
return string.match(jobKey, ".*:(.*)")
|
18
|
+
end
|
19
|
+
local getJobKeyPrefix = function (jobKey, jobId)
|
20
|
+
return string.sub(jobKey, 0, #jobKey - #jobId)
|
21
|
+
end
|
22
|
+
--[[
|
23
|
+
Function to recursively check if there are no locks
|
24
|
+
on the jobs to be removed.
|
25
|
+
returns:
|
26
|
+
boolean
|
27
|
+
]]
|
28
|
+
local function isLocked( prefix, jobId)
|
29
|
+
local jobKey = prefix .. jobId;
|
30
|
+
-- Check if this job is locked
|
31
|
+
local lockKey = jobKey .. ':lock'
|
32
|
+
local lock = rcall("GET", lockKey)
|
33
|
+
if not lock then
|
34
|
+
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
|
35
|
+
if (#dependencies > 0) then
|
36
|
+
for i, childJobKey in ipairs(dependencies) do
|
37
|
+
-- We need to get the jobId for this job.
|
38
|
+
local childJobId = getJobIdFromKey(childJobKey)
|
39
|
+
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
|
40
|
+
local result = isLocked( childJobPrefix, childJobId )
|
41
|
+
if result then
|
42
|
+
return true
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
return false
|
47
|
+
end
|
48
|
+
return true
|
49
|
+
end
|
50
|
+
--[[
|
51
|
+
Function to remove from any state.
|
52
|
+
returns:
|
53
|
+
prev state
|
54
|
+
]]
|
55
|
+
local function removeJobFromAnyState( prefix, jobId)
|
56
|
+
if rcall("LREM", prefix .. "wait", 0, jobId) == 1 then
|
57
|
+
return "wait"
|
58
|
+
elseif rcall("LREM", prefix .. "paused", 0, jobId) == 1 then
|
59
|
+
return "paused"
|
60
|
+
elseif rcall("LREM", prefix .. "active", 0, jobId) == 1 then
|
61
|
+
return "active"
|
62
|
+
elseif rcall("ZREM", prefix .. "waiting-children", jobId) == 1 then
|
63
|
+
return "waiting-children"
|
64
|
+
elseif rcall("ZREM", prefix .. "delayed", jobId) == 1 then
|
65
|
+
return "delayed"
|
66
|
+
elseif rcall("ZREM", prefix .. "completed", jobId) == 1 then
|
67
|
+
return "completed"
|
68
|
+
elseif rcall("ZREM", prefix .. "failed", jobId) == 1 then
|
69
|
+
return "failed"
|
70
|
+
end
|
71
|
+
return "unknown"
|
72
|
+
end
|
73
|
+
--[[
|
74
|
+
Check if this job has a parent. If so we will just remove it from
|
75
|
+
the parent child list, but if it is the last child we should move the parent to "wait/paused"
|
76
|
+
which requires code from "moveToFinished"
|
77
|
+
]]
|
78
|
+
--[[
|
79
|
+
Function to check for the meta.paused key to decide if we are paused or not
|
80
|
+
(since an empty list and !EXISTS are not really the same).
|
81
|
+
]]
|
82
|
+
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
83
|
+
if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
|
84
|
+
return waitKey
|
85
|
+
else
|
86
|
+
return pausedKey
|
87
|
+
end
|
88
|
+
end
|
89
|
+
local function moveParentToWait(parentPrefix, parentId, emitEvent)
|
90
|
+
local parentTarget = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "wait", parentPrefix .. "paused")
|
91
|
+
rcall("RPUSH", parentTarget, parentId)
|
92
|
+
if emitEvent then
|
93
|
+
local parentEventStream = parentPrefix .. "events"
|
94
|
+
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
|
95
|
+
end
|
96
|
+
end
|
97
|
+
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey)
|
98
|
+
if parentKey then
|
99
|
+
local parentProcessedKey = parentKey .. ":processed"
|
100
|
+
rcall("HDEL", parentProcessedKey, jobKey)
|
101
|
+
local parentDependenciesKey = parentKey .. ":dependencies"
|
102
|
+
local result = rcall("SREM", parentDependenciesKey, jobKey)
|
103
|
+
if result > 0 then
|
104
|
+
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
|
105
|
+
if pendingDependencies == 0 then
|
106
|
+
local parentId = getJobIdFromKey(parentKey)
|
107
|
+
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
|
108
|
+
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
|
109
|
+
if numRemovedElements == 1 then
|
110
|
+
if hard then
|
111
|
+
if parentPrefix == baseKey then
|
112
|
+
removeParentDependencyKey(parentKey, hard, nil, baseKey)
|
113
|
+
rcall("DEL", parentKey, parentKey .. ':logs',
|
114
|
+
parentKey .. ':dependencies', parentKey .. ':processed')
|
115
|
+
else
|
116
|
+
moveParentToWait(parentPrefix, parentId)
|
117
|
+
end
|
118
|
+
else
|
119
|
+
moveParentToWait(parentPrefix, parentId, true)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
else
|
125
|
+
local missedParentKey = rcall("HGET", jobKey, "parentKey")
|
126
|
+
if( (type(missedParentKey) == "string") and missedParentKey ~= "" and (rcall("EXISTS", missedParentKey) == 1)) then
|
127
|
+
local parentProcessedKey = missedParentKey .. ":processed"
|
128
|
+
rcall("HDEL", parentProcessedKey, jobKey)
|
129
|
+
local parentDependenciesKey = missedParentKey .. ":dependencies"
|
130
|
+
local result = rcall("SREM", parentDependenciesKey, jobKey)
|
131
|
+
if result > 0 then
|
132
|
+
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
|
133
|
+
if pendingDependencies == 0 then
|
134
|
+
local parentId = getJobIdFromKey(missedParentKey)
|
135
|
+
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
|
136
|
+
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
|
137
|
+
if numRemovedElements == 1 then
|
138
|
+
if hard then
|
139
|
+
if parentPrefix == baseKey then
|
140
|
+
removeParentDependencyKey(missedParentKey, hard, nil, baseKey)
|
141
|
+
rcall("DEL", missedParentKey, missedParentKey .. ':logs',
|
142
|
+
missedParentKey .. ':dependencies', missedParentKey .. ':processed')
|
143
|
+
else
|
144
|
+
moveParentToWait(parentPrefix, parentId)
|
145
|
+
end
|
146
|
+
else
|
147
|
+
moveParentToWait(parentPrefix, parentId, true)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
local function removeJob( prefix, jobId, parentKey)
|
156
|
+
local jobKey = prefix .. jobId;
|
157
|
+
removeParentDependencyKey(jobKey, false, parentKey)
|
158
|
+
-- Check if this job has children
|
159
|
+
-- If so, we are going to try to remove the children recursively in deep first way because
|
160
|
+
-- if some job is locked we must exit with and error.
|
161
|
+
--local countProcessed = rcall("HLEN", jobKey .. ":processed")
|
162
|
+
local processed = rcall("HGETALL", jobKey .. ":processed")
|
163
|
+
if (#processed > 0) then
|
164
|
+
for i = 1, #processed, 2 do
|
165
|
+
local childJobId = getJobIdFromKey(processed[i])
|
166
|
+
local childJobPrefix = getJobKeyPrefix(processed[i], childJobId)
|
167
|
+
removeJob( childJobPrefix, childJobId, jobKey )
|
168
|
+
end
|
169
|
+
end
|
170
|
+
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
|
171
|
+
if (#dependencies > 0) then
|
172
|
+
for i, childJobKey in ipairs(dependencies) do
|
173
|
+
-- We need to get the jobId for this job.
|
174
|
+
local childJobId = getJobIdFromKey(childJobKey)
|
175
|
+
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
|
176
|
+
removeJob( childJobPrefix, childJobId, jobKey )
|
177
|
+
end
|
178
|
+
end
|
179
|
+
local prev = removeJobFromAnyState(prefix, jobId)
|
180
|
+
rcall("ZREM", prefix .. "priority", jobId)
|
181
|
+
rcall("DEL", jobKey, jobKey .. ":logs", jobKey .. ":dependencies", jobKey .. ":processed")
|
182
|
+
-- -- delete keys related to rate limiter
|
183
|
+
-- local limiterIndexTable = KEYS[10] .. ":index"
|
184
|
+
-- local limitedSetKey = rcall("HGET", limiterIndexTable, jobId)
|
185
|
+
-- if limitedSetKey then
|
186
|
+
-- rcall("SREM", limitedSetKey, jobId)
|
187
|
+
-- rcall("HDEL", limiterIndexTable, jobId)
|
188
|
+
-- end
|
189
|
+
rcall("XADD", prefix .. "events", "*", "event", "removed", "jobId", jobId, "prev", prev);
|
190
|
+
end
|
191
|
+
local prefix = KEYS[1]
|
192
|
+
if not isLocked(prefix, ARGV[1]) then
|
193
|
+
removeJob(prefix, ARGV[1])
|
194
|
+
return 1
|
195
|
+
end
|
196
|
+
return 0
|
197
|
+
`;
|
198
|
+
export const removeJob = {
|
199
|
+
name: 'removeJob',
|
200
|
+
content,
|
201
|
+
keys: 1,
|
202
|
+
};
|
203
|
+
//# sourceMappingURL=removeJob-1.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"removeJob-1.js","sourceRoot":"","sources":["../../../src/scripts/removeJob-1.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoMf,CAAC;AACF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,WAAW;IACjB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -1,21 +1,17 @@
|
|
1
|
-
|
2
|
-
--[[
|
1
|
+
const content = `--[[
|
3
2
|
Removes a repeatable job
|
4
3
|
Input:
|
5
4
|
KEYS[1] repeat jobs key
|
6
5
|
KEYS[2] delayed jobs key
|
7
|
-
|
8
6
|
ARGV[1] repeat job id
|
9
7
|
ARGV[2] repeat job key
|
10
8
|
ARGV[3] queue key
|
11
|
-
|
12
9
|
Output:
|
13
10
|
0 - OK
|
14
11
|
1 - Missing repeat job
|
15
12
|
]]
|
16
13
|
local rcall = redis.call
|
17
14
|
local millis = rcall("ZSCORE", KEYS[1], ARGV[2])
|
18
|
-
|
19
15
|
if(millis) then
|
20
16
|
-- Delete next programmed job.
|
21
17
|
local repeatJobId = ARGV[1] .. millis
|
@@ -24,9 +20,14 @@ if(millis) then
|
|
24
20
|
rcall("XADD", ARGV[3] .. "events", "*", "event", "removed", "jobId", repeatJobId, "prev", "delayed");
|
25
21
|
end
|
26
22
|
end
|
27
|
-
|
28
23
|
if(rcall("ZREM", KEYS[1], ARGV[2]) == 1) then
|
29
24
|
return 0
|
30
25
|
end
|
31
|
-
|
32
26
|
return 1
|
27
|
+
`;
|
28
|
+
export const removeRepeatable = {
|
29
|
+
name: 'removeRepeatable',
|
30
|
+
content,
|
31
|
+
keys: 2,
|
32
|
+
};
|
33
|
+
//# 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;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,kBAAkB;IACxB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|