bullmq 5.8.6 → 5.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/classes/queue.js +29 -0
- package/dist/cjs/classes/queue.js.map +1 -1
- package/dist/cjs/classes/scripts.js +17 -1
- package/dist/cjs/classes/scripts.js.map +1 -1
- package/dist/cjs/classes/worker.js +1 -1
- package/dist/cjs/classes/worker.js.map +1 -1
- package/dist/cjs/commands/addDelayedJob-6.lua +2 -6
- package/dist/cjs/commands/{addPrioritizedJob-7.lua → addPrioritizedJob-8.lua} +9 -7
- package/dist/cjs/commands/{addStandardJob-7.lua → addStandardJob-8.lua} +6 -5
- package/dist/cjs/commands/changeDelay-4.lua +1 -5
- package/dist/cjs/commands/{changePriority-6.lua → changePriority-7.lua} +12 -10
- package/dist/cjs/commands/getCountsPerPriority-4.lua +6 -3
- package/dist/cjs/commands/includes/addBaseMarkerIfNeeded.lua +2 -2
- package/dist/cjs/commands/includes/addJobInTargetList.lua +2 -2
- package/dist/cjs/commands/includes/addJobWithPriority.lua +3 -2
- package/dist/cjs/commands/includes/getTargetQueueList.lua +14 -4
- package/dist/cjs/commands/includes/isQueueMaxed.lua +15 -0
- package/dist/cjs/commands/includes/isQueuePaused.lua +1 -1
- package/dist/cjs/commands/includes/isQueuePausedOrMaxed.lua +18 -0
- package/dist/cjs/commands/includes/moveParentToWaitIfNeeded.lua +8 -6
- package/dist/cjs/commands/includes/removeParentDependencyKey.lua +3 -3
- package/dist/cjs/commands/isMaxed-2.lua +17 -0
- package/dist/cjs/commands/moveJobFromActiveToWait-10.lua +2 -2
- package/dist/{esm/commands/moveJobsToWait-7.lua → cjs/commands/moveJobsToWait-8.lua} +4 -3
- package/dist/cjs/commands/moveStalledJobsToWait-9.lua +3 -3
- package/dist/cjs/commands/moveToActive-11.lua +4 -4
- package/dist/cjs/commands/moveToDelayed-8.lua +2 -6
- package/dist/cjs/commands/moveToFinished-14.lua +4 -4
- package/dist/cjs/commands/moveToWaitingChildren-5.lua +4 -3
- package/dist/{esm/commands/promote-8.lua → cjs/commands/promote-9.lua} +9 -7
- package/dist/{esm/commands/removeJob-1.lua → cjs/commands/removeJob-2.lua} +2 -1
- package/dist/{esm/commands/reprocessJob-7.lua → cjs/commands/reprocessJob-8.lua} +4 -3
- package/dist/cjs/commands/retryJob-11.lua +8 -4
- package/dist/cjs/scripts/addDelayedJob-6.js +41 -23
- package/dist/cjs/scripts/addDelayedJob-6.js.map +1 -1
- package/dist/cjs/scripts/addParentJob-4.js +39 -18
- package/dist/cjs/scripts/addParentJob-4.js.map +1 -1
- package/dist/cjs/scripts/{addPrioritizedJob-7.js → addPrioritizedJob-8.js} +49 -26
- package/dist/cjs/scripts/addPrioritizedJob-8.js.map +1 -0
- package/dist/cjs/scripts/{addStandardJob-7.js → addStandardJob-8.js} +47 -25
- package/dist/cjs/scripts/addStandardJob-8.js.map +1 -0
- package/dist/cjs/scripts/changeDelay-4.js +1 -11
- package/dist/cjs/scripts/changeDelay-4.js.map +1 -1
- package/dist/cjs/scripts/{changePriority-6.js → changePriority-7.js} +33 -21
- package/dist/cjs/scripts/changePriority-7.js.map +1 -0
- package/dist/cjs/scripts/cleanJobsInSet-2.js +20 -11
- package/dist/cjs/scripts/cleanJobsInSet-2.js.map +1 -1
- package/dist/cjs/scripts/drain-4.js +20 -11
- package/dist/cjs/scripts/drain-4.js.map +1 -1
- package/dist/cjs/scripts/getCountsPerPriority-4.js +7 -8
- package/dist/cjs/scripts/getCountsPerPriority-4.js.map +1 -1
- package/dist/cjs/scripts/index.js +8 -7
- package/dist/cjs/scripts/index.js.map +1 -1
- package/dist/cjs/scripts/isMaxed-2.js +34 -0
- package/dist/cjs/scripts/isMaxed-2.js.map +1 -0
- package/dist/cjs/scripts/moveJobFromActiveToWait-10.js +19 -10
- package/dist/cjs/scripts/moveJobFromActiveToWait-10.js.map +1 -1
- package/dist/cjs/scripts/{moveJobsToWait-7.js → moveJobsToWait-8.js} +21 -11
- package/dist/cjs/scripts/moveJobsToWait-8.js.map +1 -0
- package/dist/cjs/scripts/moveStalledJobsToWait-9.js +45 -24
- package/dist/cjs/scripts/moveStalledJobsToWait-9.js.map +1 -1
- package/dist/cjs/scripts/moveToActive-11.js +24 -14
- package/dist/cjs/scripts/moveToActive-11.js.map +1 -1
- package/dist/cjs/scripts/moveToDelayed-8.js +2 -12
- package/dist/cjs/scripts/moveToDelayed-8.js.map +1 -1
- package/dist/cjs/scripts/moveToFinished-14.js +46 -25
- package/dist/cjs/scripts/moveToFinished-14.js.map +1 -1
- package/dist/cjs/scripts/moveToWaitingChildren-5.js +4 -3
- package/dist/cjs/scripts/moveToWaitingChildren-5.js.map +1 -1
- package/dist/cjs/scripts/obliterate-2.js +20 -11
- package/dist/cjs/scripts/obliterate-2.js.map +1 -1
- package/dist/cjs/scripts/{promote-8.js → promote-9.js} +31 -19
- package/dist/cjs/scripts/promote-9.js.map +1 -0
- package/dist/cjs/scripts/removeChildDependency-1.js +20 -11
- package/dist/cjs/scripts/removeChildDependency-1.js.map +1 -1
- package/dist/cjs/scripts/{removeJob-1.js → removeJob-2.js} +24 -14
- package/dist/cjs/scripts/{removeJob-1.js.map → removeJob-2.js.map} +1 -1
- package/dist/cjs/scripts/{reprocessJob-7.js → reprocessJob-8.js} +23 -13
- package/dist/cjs/scripts/reprocessJob-8.js.map +1 -0
- package/dist/cjs/scripts/retryJob-11.js +42 -14
- package/dist/cjs/scripts/retryJob-11.js.map +1 -1
- package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/esm/classes/queue.d.ts +17 -0
- package/dist/esm/classes/queue.js +29 -0
- package/dist/esm/classes/queue.js.map +1 -1
- package/dist/esm/classes/scripts.d.ts +2 -0
- package/dist/esm/classes/scripts.js +17 -1
- package/dist/esm/classes/scripts.js.map +1 -1
- package/dist/esm/classes/worker.js +1 -1
- package/dist/esm/classes/worker.js.map +1 -1
- package/dist/esm/commands/addDelayedJob-6.lua +2 -6
- package/dist/esm/commands/{addPrioritizedJob-7.lua → addPrioritizedJob-8.lua} +9 -7
- package/dist/esm/commands/{addStandardJob-7.lua → addStandardJob-8.lua} +6 -5
- package/dist/esm/commands/changeDelay-4.lua +1 -5
- package/dist/esm/commands/{changePriority-6.lua → changePriority-7.lua} +12 -10
- package/dist/esm/commands/getCountsPerPriority-4.lua +6 -3
- package/dist/esm/commands/includes/addBaseMarkerIfNeeded.lua +2 -2
- package/dist/esm/commands/includes/addJobInTargetList.lua +2 -2
- package/dist/esm/commands/includes/addJobWithPriority.lua +3 -2
- package/dist/esm/commands/includes/getTargetQueueList.lua +14 -4
- package/dist/esm/commands/includes/isQueueMaxed.lua +15 -0
- package/dist/esm/commands/includes/isQueuePaused.lua +1 -1
- package/dist/esm/commands/includes/isQueuePausedOrMaxed.lua +18 -0
- package/dist/esm/commands/includes/moveParentToWaitIfNeeded.lua +8 -6
- package/dist/esm/commands/includes/removeParentDependencyKey.lua +3 -3
- package/dist/esm/commands/isMaxed-2.lua +17 -0
- package/dist/esm/commands/moveJobFromActiveToWait-10.lua +2 -2
- package/dist/{cjs/commands/moveJobsToWait-7.lua → esm/commands/moveJobsToWait-8.lua} +4 -3
- package/dist/esm/commands/moveStalledJobsToWait-9.lua +3 -3
- package/dist/esm/commands/moveToActive-11.lua +4 -4
- package/dist/esm/commands/moveToDelayed-8.lua +2 -6
- package/dist/esm/commands/moveToFinished-14.lua +4 -4
- package/dist/esm/commands/moveToWaitingChildren-5.lua +4 -3
- package/dist/{cjs/commands/promote-8.lua → esm/commands/promote-9.lua} +9 -7
- package/dist/{cjs/commands/removeJob-1.lua → esm/commands/removeJob-2.lua} +2 -1
- package/dist/{cjs/commands/reprocessJob-7.lua → esm/commands/reprocessJob-8.lua} +4 -3
- package/dist/esm/commands/retryJob-11.lua +8 -4
- package/dist/esm/scripts/addDelayedJob-6.js +41 -23
- package/dist/esm/scripts/addDelayedJob-6.js.map +1 -1
- package/dist/esm/scripts/addParentJob-4.js +39 -18
- package/dist/esm/scripts/addParentJob-4.js.map +1 -1
- package/dist/esm/scripts/{addPrioritizedJob-7.js → addPrioritizedJob-8.js} +49 -26
- package/dist/esm/scripts/addPrioritizedJob-8.js.map +1 -0
- package/dist/esm/scripts/{addStandardJob-7.js → addStandardJob-8.js} +47 -25
- package/dist/esm/scripts/addStandardJob-8.js.map +1 -0
- package/dist/esm/scripts/changeDelay-4.js +1 -11
- package/dist/esm/scripts/changeDelay-4.js.map +1 -1
- package/dist/esm/scripts/{changePriority-6.js → changePriority-7.js} +33 -21
- package/dist/esm/scripts/changePriority-7.js.map +1 -0
- package/dist/esm/scripts/cleanJobsInSet-2.js +20 -11
- package/dist/esm/scripts/cleanJobsInSet-2.js.map +1 -1
- package/dist/esm/scripts/drain-4.js +20 -11
- package/dist/esm/scripts/drain-4.js.map +1 -1
- package/dist/esm/scripts/getCountsPerPriority-4.js +7 -8
- package/dist/esm/scripts/getCountsPerPriority-4.js.map +1 -1
- package/dist/esm/scripts/index.d.ts +8 -7
- package/dist/esm/scripts/index.js +8 -7
- package/dist/esm/scripts/index.js.map +1 -1
- package/dist/esm/scripts/isMaxed-2.d.ts +5 -0
- package/dist/esm/scripts/isMaxed-2.js +31 -0
- package/dist/esm/scripts/isMaxed-2.js.map +1 -0
- package/dist/esm/scripts/moveJobFromActiveToWait-10.js +19 -10
- package/dist/esm/scripts/moveJobFromActiveToWait-10.js.map +1 -1
- package/dist/esm/scripts/{moveJobsToWait-7.js → moveJobsToWait-8.js} +21 -11
- package/dist/esm/scripts/moveJobsToWait-8.js.map +1 -0
- package/dist/esm/scripts/moveStalledJobsToWait-9.js +45 -24
- package/dist/esm/scripts/moveStalledJobsToWait-9.js.map +1 -1
- package/dist/esm/scripts/moveToActive-11.js +24 -14
- package/dist/esm/scripts/moveToActive-11.js.map +1 -1
- package/dist/esm/scripts/moveToDelayed-8.js +2 -12
- package/dist/esm/scripts/moveToDelayed-8.js.map +1 -1
- package/dist/esm/scripts/moveToFinished-14.js +46 -25
- package/dist/esm/scripts/moveToFinished-14.js.map +1 -1
- package/dist/esm/scripts/moveToWaitingChildren-5.js +4 -3
- package/dist/esm/scripts/moveToWaitingChildren-5.js.map +1 -1
- package/dist/esm/scripts/obliterate-2.js +20 -11
- package/dist/esm/scripts/obliterate-2.js.map +1 -1
- package/dist/esm/scripts/{promote-8.js → promote-9.js} +31 -19
- package/dist/esm/scripts/promote-9.js.map +1 -0
- package/dist/esm/scripts/removeChildDependency-1.js +20 -11
- package/dist/esm/scripts/removeChildDependency-1.js.map +1 -1
- package/dist/esm/scripts/{removeJob-1.js → removeJob-2.js} +24 -14
- package/dist/esm/scripts/{removeJob-1.js.map → removeJob-2.js.map} +1 -1
- package/dist/esm/scripts/{reprocessJob-7.js → reprocessJob-8.js} +23 -13
- package/dist/esm/scripts/reprocessJob-8.js.map +1 -0
- package/dist/esm/scripts/retryJob-11.js +42 -14
- package/dist/esm/scripts/retryJob-11.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/dist/cjs/scripts/addPrioritizedJob-7.js.map +0 -1
- package/dist/cjs/scripts/addStandardJob-7.js.map +0 -1
- package/dist/cjs/scripts/changePriority-6.js.map +0 -1
- package/dist/cjs/scripts/moveJobsToWait-7.js.map +0 -1
- package/dist/cjs/scripts/promote-8.js.map +0 -1
- package/dist/cjs/scripts/reprocessJob-7.js.map +0 -1
- package/dist/esm/scripts/addPrioritizedJob-7.js.map +0 -1
- package/dist/esm/scripts/addStandardJob-7.js.map +0 -1
- package/dist/esm/scripts/changePriority-6.js.map +0 -1
- package/dist/esm/scripts/moveJobsToWait-7.js.map +0 -1
- package/dist/esm/scripts/promote-8.js.map +0 -1
- package/dist/esm/scripts/reprocessJob-7.js.map +0 -1
- /package/dist/esm/scripts/{addPrioritizedJob-7.d.ts → addPrioritizedJob-8.d.ts} +0 -0
- /package/dist/esm/scripts/{addStandardJob-7.d.ts → addStandardJob-8.d.ts} +0 -0
- /package/dist/esm/scripts/{changePriority-6.d.ts → changePriority-7.d.ts} +0 -0
- /package/dist/esm/scripts/{moveJobsToWait-7.d.ts → moveJobsToWait-8.d.ts} +0 -0
- /package/dist/esm/scripts/{promote-8.d.ts → promote-9.d.ts} +0 -0
- /package/dist/esm/scripts/{removeJob-1.d.ts → removeJob-2.d.ts} +0 -0
- /package/dist/esm/scripts/{reprocessJob-7.d.ts → reprocessJob-8.d.ts} +0 -0
@@ -9,8 +9,9 @@ const content = `--[[
|
|
9
9
|
KEYS[3] 'id'
|
10
10
|
KEYS[4] 'prioritized'
|
11
11
|
KEYS[5] 'completed'
|
12
|
-
KEYS[6]
|
13
|
-
KEYS[7]
|
12
|
+
KEYS[6] 'active'
|
13
|
+
KEYS[7] events stream key
|
14
|
+
KEYS[8] 'pc' priority counter
|
14
15
|
ARGV[1] msgpacked arguments array
|
15
16
|
[1] key prefix,
|
16
17
|
[2] custom id (will not generate one automatically)
|
@@ -31,8 +32,9 @@ local metaKey = KEYS[2]
|
|
31
32
|
local idKey = KEYS[3]
|
32
33
|
local priorityKey = KEYS[4]
|
33
34
|
local completedKey = KEYS[5]
|
34
|
-
local
|
35
|
-
local
|
35
|
+
local activeKey = KEYS[6]
|
36
|
+
local eventsKey = KEYS[7]
|
37
|
+
local priorityCounterKey = KEYS[8]
|
36
38
|
local jobId
|
37
39
|
local jobIdKey
|
38
40
|
local rcall = redis.call
|
@@ -51,16 +53,17 @@ local parentData
|
|
51
53
|
--[[
|
52
54
|
Add marker if needed when a job is available.
|
53
55
|
]]
|
54
|
-
local function addBaseMarkerIfNeeded(markerKey,
|
55
|
-
if not
|
56
|
+
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
57
|
+
if not isPausedOrMaxed then
|
56
58
|
rcall("ZADD", markerKey, 0, "0")
|
57
59
|
end
|
58
60
|
end
|
59
|
-
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
|
61
|
+
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
|
62
|
+
isPausedOrMaxed)
|
60
63
|
local prioCounter = rcall("INCR", priorityCounterKey)
|
61
64
|
local score = priority * 0x100000000 + prioCounter % 0x100000000
|
62
65
|
rcall("ZADD", prioritizedKey, score, jobId)
|
63
|
-
addBaseMarkerIfNeeded(markerKey,
|
66
|
+
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
64
67
|
end
|
65
68
|
--[[
|
66
69
|
Function to store a job
|
@@ -145,27 +148,45 @@ end
|
|
145
148
|
Function to add job in target list and add marker if needed.
|
146
149
|
]]
|
147
150
|
-- Includes
|
148
|
-
local function addJobInTargetList(targetKey, markerKey, pushCmd,
|
151
|
+
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
|
149
152
|
rcall(pushCmd, targetKey, jobId)
|
150
|
-
addBaseMarkerIfNeeded(markerKey,
|
153
|
+
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
151
154
|
end
|
152
155
|
--[[
|
153
|
-
Function to check
|
156
|
+
Function to check if queue is paused or maxed
|
154
157
|
(since an empty list and !EXISTS are not really the same).
|
155
158
|
]]
|
156
|
-
local function
|
157
|
-
|
159
|
+
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
|
160
|
+
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
|
161
|
+
if queueAttributes[1] then
|
162
|
+
return true
|
163
|
+
else
|
164
|
+
if queueAttributes[2] then
|
165
|
+
local activeCount = rcall("LLEN", activeKey)
|
166
|
+
return activeCount >= tonumber(queueAttributes[2])
|
167
|
+
end
|
168
|
+
end
|
169
|
+
return false
|
158
170
|
end
|
159
171
|
--[[
|
160
172
|
Function to check for the meta.paused key to decide if we are paused or not
|
161
173
|
(since an empty list and !EXISTS are not really the same).
|
162
174
|
]]
|
163
|
-
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
164
|
-
|
165
|
-
|
166
|
-
else
|
175
|
+
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
|
176
|
+
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
|
177
|
+
if queueAttributes[1] then
|
167
178
|
return pausedKey, true
|
179
|
+
else
|
180
|
+
if queueAttributes[2] then
|
181
|
+
local activeCount = rcall("LLEN", activeKey)
|
182
|
+
if activeCount >= tonumber(queueAttributes[2]) then
|
183
|
+
return waitKey, true
|
184
|
+
else
|
185
|
+
return waitKey, false
|
186
|
+
end
|
187
|
+
end
|
168
188
|
end
|
189
|
+
return waitKey, false
|
169
190
|
end
|
170
191
|
local function moveParentToWaitIfNeeded(parentQueueKey, parentDependenciesKey,
|
171
192
|
parentKey, parentId, timestamp)
|
@@ -175,6 +196,7 @@ local function moveParentToWaitIfNeeded(parentQueueKey, parentDependenciesKey,
|
|
175
196
|
rcall("ZREM", parentQueueKey .. ":waiting-children", parentId)
|
176
197
|
local parentWaitKey = parentQueueKey .. ":wait"
|
177
198
|
local parentPausedKey = parentQueueKey .. ":paused"
|
199
|
+
local parentActiveKey = parentQueueKey .. ":active"
|
178
200
|
local parentMetaKey = parentQueueKey .. ":meta"
|
179
201
|
local parentMarkerKey = parentQueueKey .. ":marker"
|
180
202
|
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
|
@@ -190,15 +212,16 @@ local function moveParentToWaitIfNeeded(parentQueueKey, parentDependenciesKey,
|
|
190
212
|
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
|
191
213
|
else
|
192
214
|
if priority == 0 then
|
193
|
-
local parentTarget,
|
194
|
-
getTargetQueueList(parentMetaKey, parentWaitKey,
|
215
|
+
local parentTarget, isParentPausedOrMaxed =
|
216
|
+
getTargetQueueList(parentMetaKey, parentActiveKey, parentWaitKey,
|
195
217
|
parentPausedKey)
|
196
|
-
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH",
|
218
|
+
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed,
|
219
|
+
parentId)
|
197
220
|
else
|
198
|
-
local
|
221
|
+
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
|
199
222
|
addJobWithPriority(parentMarkerKey,
|
200
223
|
parentQueueKey .. ":prioritized", priority,
|
201
|
-
parentId, parentQueueKey .. ":pc",
|
224
|
+
parentId, parentQueueKey .. ":pc", isPausedOrMaxed)
|
202
225
|
end
|
203
226
|
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting",
|
204
227
|
"jobId", parentId, "prev", "waiting-children")
|
@@ -270,8 +293,8 @@ local delay, priority = storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2],
|
|
270
293
|
opts, timestamp, parentKey, parentData,
|
271
294
|
repeatJobKey)
|
272
295
|
-- Add the job to the prioritized set
|
273
|
-
local
|
274
|
-
addJobWithPriority( KEYS[1], priorityKey, priority, jobId, priorityCounterKey,
|
296
|
+
local isPausedOrMaxed = isQueuePausedOrMaxed(metaKey, activeKey)
|
297
|
+
addJobWithPriority( KEYS[1], priorityKey, priority, jobId, priorityCounterKey, isPausedOrMaxed)
|
275
298
|
-- Emit waiting event
|
276
299
|
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
|
277
300
|
"jobId", jobId)
|
@@ -284,6 +307,6 @@ return jobId .. "" -- convert to string
|
|
284
307
|
export const addPrioritizedJob = {
|
285
308
|
name: 'addPrioritizedJob',
|
286
309
|
content,
|
287
|
-
keys:
|
310
|
+
keys: 8,
|
288
311
|
};
|
289
|
-
//# sourceMappingURL=addPrioritizedJob-
|
312
|
+
//# sourceMappingURL=addPrioritizedJob-8.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"addPrioritizedJob-8.js","sourceRoot":"","sources":["../../../src/scripts/addPrioritizedJob-8.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiTf,CAAC;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,mBAAmB;IACzB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -18,8 +18,9 @@ const content = `--[[
|
|
18
18
|
KEYS[3] 'meta'
|
19
19
|
KEYS[4] 'id'
|
20
20
|
KEYS[5] 'completed'
|
21
|
-
KEYS[6]
|
22
|
-
KEYS[7]
|
21
|
+
KEYS[6] 'active'
|
22
|
+
KEYS[7] events stream key
|
23
|
+
KEYS[8] marker key
|
23
24
|
ARGV[1] msgpacked arguments array
|
24
25
|
[1] key prefix,
|
25
26
|
[2] custom id (will not generate one automatically)
|
@@ -36,7 +37,7 @@ const content = `--[[
|
|
36
37
|
jobId - OK
|
37
38
|
-5 - Missing parent key
|
38
39
|
]]
|
39
|
-
local eventsKey = KEYS[
|
40
|
+
local eventsKey = KEYS[7]
|
40
41
|
local jobId
|
41
42
|
local jobIdKey
|
42
43
|
local rcall = redis.call
|
@@ -55,14 +56,14 @@ local parentData
|
|
55
56
|
--[[
|
56
57
|
Add marker if needed when a job is available.
|
57
58
|
]]
|
58
|
-
local function addBaseMarkerIfNeeded(markerKey,
|
59
|
-
if not
|
59
|
+
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
60
|
+
if not isPausedOrMaxed then
|
60
61
|
rcall("ZADD", markerKey, 0, "0")
|
61
62
|
end
|
62
63
|
end
|
63
|
-
local function addJobInTargetList(targetKey, markerKey, pushCmd,
|
64
|
+
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
|
64
65
|
rcall(pushCmd, targetKey, jobId)
|
65
|
-
addBaseMarkerIfNeeded(markerKey,
|
66
|
+
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
66
67
|
end
|
67
68
|
--[[
|
68
69
|
Function to get max events value or set by default 10000.
|
@@ -79,12 +80,21 @@ end
|
|
79
80
|
Function to check for the meta.paused key to decide if we are paused or not
|
80
81
|
(since an empty list and !EXISTS are not really the same).
|
81
82
|
]]
|
82
|
-
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
83
|
-
|
84
|
-
|
85
|
-
else
|
83
|
+
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
|
84
|
+
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
|
85
|
+
if queueAttributes[1] then
|
86
86
|
return pausedKey, true
|
87
|
+
else
|
88
|
+
if queueAttributes[2] then
|
89
|
+
local activeCount = rcall("LLEN", activeKey)
|
90
|
+
if activeCount >= tonumber(queueAttributes[2]) then
|
91
|
+
return waitKey, true
|
92
|
+
else
|
93
|
+
return waitKey, false
|
94
|
+
end
|
95
|
+
end
|
87
96
|
end
|
97
|
+
return waitKey, false
|
88
98
|
end
|
89
99
|
--[[
|
90
100
|
Function to handle the case when job is duplicated.
|
@@ -133,18 +143,28 @@ end
|
|
133
143
|
Function to add job considering priority.
|
134
144
|
]]
|
135
145
|
-- Includes
|
136
|
-
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
|
146
|
+
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
|
147
|
+
isPausedOrMaxed)
|
137
148
|
local prioCounter = rcall("INCR", priorityCounterKey)
|
138
149
|
local score = priority * 0x100000000 + prioCounter % 0x100000000
|
139
150
|
rcall("ZADD", prioritizedKey, score, jobId)
|
140
|
-
addBaseMarkerIfNeeded(markerKey,
|
151
|
+
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
141
152
|
end
|
142
153
|
--[[
|
143
|
-
Function to check
|
154
|
+
Function to check if queue is paused or maxed
|
144
155
|
(since an empty list and !EXISTS are not really the same).
|
145
156
|
]]
|
146
|
-
local function
|
147
|
-
|
157
|
+
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
|
158
|
+
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
|
159
|
+
if queueAttributes[1] then
|
160
|
+
return true
|
161
|
+
else
|
162
|
+
if queueAttributes[2] then
|
163
|
+
local activeCount = rcall("LLEN", activeKey)
|
164
|
+
return activeCount >= tonumber(queueAttributes[2])
|
165
|
+
end
|
166
|
+
end
|
167
|
+
return false
|
148
168
|
end
|
149
169
|
local function moveParentToWaitIfNeeded(parentQueueKey, parentDependenciesKey,
|
150
170
|
parentKey, parentId, timestamp)
|
@@ -154,6 +174,7 @@ local function moveParentToWaitIfNeeded(parentQueueKey, parentDependenciesKey,
|
|
154
174
|
rcall("ZREM", parentQueueKey .. ":waiting-children", parentId)
|
155
175
|
local parentWaitKey = parentQueueKey .. ":wait"
|
156
176
|
local parentPausedKey = parentQueueKey .. ":paused"
|
177
|
+
local parentActiveKey = parentQueueKey .. ":active"
|
157
178
|
local parentMetaKey = parentQueueKey .. ":meta"
|
158
179
|
local parentMarkerKey = parentQueueKey .. ":marker"
|
159
180
|
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
|
@@ -169,15 +190,16 @@ local function moveParentToWaitIfNeeded(parentQueueKey, parentDependenciesKey,
|
|
169
190
|
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
|
170
191
|
else
|
171
192
|
if priority == 0 then
|
172
|
-
local parentTarget,
|
173
|
-
getTargetQueueList(parentMetaKey, parentWaitKey,
|
193
|
+
local parentTarget, isParentPausedOrMaxed =
|
194
|
+
getTargetQueueList(parentMetaKey, parentActiveKey, parentWaitKey,
|
174
195
|
parentPausedKey)
|
175
|
-
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH",
|
196
|
+
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed,
|
197
|
+
parentId)
|
176
198
|
else
|
177
|
-
local
|
199
|
+
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
|
178
200
|
addJobWithPriority(parentMarkerKey,
|
179
201
|
parentQueueKey .. ":prioritized", priority,
|
180
|
-
parentId, parentQueueKey .. ":pc",
|
202
|
+
parentId, parentQueueKey .. ":pc", isPausedOrMaxed)
|
181
203
|
end
|
182
204
|
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting",
|
183
205
|
"jobId", parentId, "prev", "waiting-children")
|
@@ -273,10 +295,10 @@ end
|
|
273
295
|
-- Store the job.
|
274
296
|
storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2], opts, timestamp,
|
275
297
|
parentKey, parentData, repeatJobKey)
|
276
|
-
local target,
|
298
|
+
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[6], KEYS[1], KEYS[2])
|
277
299
|
-- LIFO or FIFO
|
278
300
|
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
|
279
|
-
addJobInTargetList(target, KEYS[
|
301
|
+
addJobInTargetList(target, KEYS[8], pushCmd, isPausedOrMaxed, jobId)
|
280
302
|
-- Emit waiting event
|
281
303
|
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
|
282
304
|
"jobId", jobId)
|
@@ -289,6 +311,6 @@ return jobId .. "" -- convert to string
|
|
289
311
|
export const addStandardJob = {
|
290
312
|
name: 'addStandardJob',
|
291
313
|
content,
|
292
|
-
keys:
|
314
|
+
keys: 8,
|
293
315
|
};
|
294
|
-
//# sourceMappingURL=addStandardJob-
|
316
|
+
//# sourceMappingURL=addStandardJob-8.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"addStandardJob-8.js","sourceRoot":"","sources":["../../../src/scripts/addStandardJob-8.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqTf,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -77,13 +77,6 @@ local function getOrSetMaxEvents(metaKey)
|
|
77
77
|
end
|
78
78
|
return maxEvents
|
79
79
|
end
|
80
|
-
--[[
|
81
|
-
Function to check for the meta.paused key to decide if we are paused or not
|
82
|
-
(since an empty list and !EXISTS are not really the same).
|
83
|
-
]]
|
84
|
-
local function isQueuePaused(queueMetaKey)
|
85
|
-
return rcall("HEXISTS", queueMetaKey, "paused") == 1
|
86
|
-
end
|
87
80
|
if rcall("EXISTS", ARGV[4]) == 1 then
|
88
81
|
local jobId = ARGV[3]
|
89
82
|
local delay = tonumber(ARGV[1])
|
@@ -98,10 +91,7 @@ if rcall("EXISTS", ARGV[4]) == 1 then
|
|
98
91
|
rcall("XADD", KEYS[4], "MAXLEN", "~", maxEvents, "*", "event", "delayed",
|
99
92
|
"jobId", jobId, "delay", delayedTimestamp)
|
100
93
|
-- mark that a delayed job is available
|
101
|
-
|
102
|
-
if not isPaused then
|
103
|
-
addDelayMarkerIfNeeded(KEYS[3], KEYS[1])
|
104
|
-
end
|
94
|
+
addDelayMarkerIfNeeded(KEYS[3], KEYS[1])
|
105
95
|
return 0
|
106
96
|
else
|
107
97
|
return -1
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"changeDelay-4.js","sourceRoot":"","sources":["../../../src/scripts/changeDelay-4.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"changeDelay-4.js","sourceRoot":"","sources":["../../../src/scripts/changeDelay-4.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiGZ,CAAC;AACL,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,aAAa;IACnB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -5,8 +5,9 @@ const content = `--[[
|
|
5
5
|
KEYS[2] 'paused'
|
6
6
|
KEYS[3] 'meta'
|
7
7
|
KEYS[4] 'prioritized'
|
8
|
-
KEYS[5] '
|
9
|
-
KEYS[6] '
|
8
|
+
KEYS[5] 'active'
|
9
|
+
KEYS[6] 'pc' priority counter
|
10
|
+
KEYS[7] 'marker'
|
10
11
|
ARGV[1] priority value
|
11
12
|
ARGV[2] job key
|
12
13
|
ARGV[3] job id
|
@@ -27,35 +28,45 @@ local rcall = redis.call
|
|
27
28
|
--[[
|
28
29
|
Add marker if needed when a job is available.
|
29
30
|
]]
|
30
|
-
local function addBaseMarkerIfNeeded(markerKey,
|
31
|
-
if not
|
31
|
+
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
32
|
+
if not isPausedOrMaxed then
|
32
33
|
rcall("ZADD", markerKey, 0, "0")
|
33
34
|
end
|
34
35
|
end
|
35
|
-
local function addJobInTargetList(targetKey, markerKey, pushCmd,
|
36
|
+
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
|
36
37
|
rcall(pushCmd, targetKey, jobId)
|
37
|
-
addBaseMarkerIfNeeded(markerKey,
|
38
|
+
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
38
39
|
end
|
39
40
|
--[[
|
40
41
|
Function to add job considering priority.
|
41
42
|
]]
|
42
43
|
-- Includes
|
43
|
-
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
|
44
|
+
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
|
45
|
+
isPausedOrMaxed)
|
44
46
|
local prioCounter = rcall("INCR", priorityCounterKey)
|
45
47
|
local score = priority * 0x100000000 + prioCounter % 0x100000000
|
46
48
|
rcall("ZADD", prioritizedKey, score, jobId)
|
47
|
-
addBaseMarkerIfNeeded(markerKey,
|
49
|
+
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
48
50
|
end
|
49
51
|
--[[
|
50
52
|
Function to check for the meta.paused key to decide if we are paused or not
|
51
53
|
(since an empty list and !EXISTS are not really the same).
|
52
54
|
]]
|
53
|
-
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
54
|
-
|
55
|
-
|
56
|
-
else
|
55
|
+
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
|
56
|
+
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
|
57
|
+
if queueAttributes[1] then
|
57
58
|
return pausedKey, true
|
59
|
+
else
|
60
|
+
if queueAttributes[2] then
|
61
|
+
local activeCount = rcall("LLEN", activeKey)
|
62
|
+
if activeCount >= tonumber(queueAttributes[2]) then
|
63
|
+
return waitKey, true
|
64
|
+
else
|
65
|
+
return waitKey, false
|
66
|
+
end
|
67
|
+
end
|
58
68
|
end
|
69
|
+
return waitKey, false
|
59
70
|
end
|
60
71
|
--[[
|
61
72
|
Function to push back job considering priority in front of same prioritized jobs.
|
@@ -67,31 +78,32 @@ local function pushBackJobWithPriority(prioritizedKey, priority, jobId)
|
|
67
78
|
rcall("ZADD", prioritizedKey, score, jobId)
|
68
79
|
end
|
69
80
|
local function reAddJobWithNewPriority( prioritizedKey, markerKey, targetKey,
|
70
|
-
priorityCounter, lifo, priority, jobId,
|
81
|
+
priorityCounter, lifo, priority, jobId, isPausedOrMaxed)
|
71
82
|
if priority == 0 then
|
72
83
|
local pushCmd = lifo and 'RPUSH' or 'LPUSH'
|
73
|
-
addJobInTargetList(targetKey, markerKey, pushCmd,
|
84
|
+
addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
|
74
85
|
else
|
75
86
|
if lifo then
|
76
87
|
pushBackJobWithPriority(prioritizedKey, priority, jobId)
|
77
88
|
else
|
78
89
|
addJobWithPriority(markerKey, prioritizedKey, priority, jobId,
|
79
|
-
priorityCounter,
|
90
|
+
priorityCounter, isPausedOrMaxed)
|
80
91
|
end
|
81
92
|
end
|
82
93
|
end
|
83
94
|
if rcall("EXISTS", jobKey) == 1 then
|
84
95
|
local metaKey = KEYS[3]
|
85
|
-
local target,
|
86
|
-
local markerKey = KEYS[6]
|
96
|
+
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[5], KEYS[1], KEYS[2])
|
87
97
|
local prioritizedKey = KEYS[4]
|
98
|
+
local priorityCounterKey = KEYS[6]
|
99
|
+
local markerKey = KEYS[7]
|
88
100
|
-- Re-add with the new priority
|
89
101
|
if rcall("ZREM", KEYS[4], jobId) > 0 then
|
90
102
|
reAddJobWithNewPriority( prioritizedKey, markerKey, target,
|
91
|
-
|
103
|
+
priorityCounterKey, ARGV[4] == '1', priority, jobId, isPausedOrMaxed)
|
92
104
|
elseif rcall("LREM", target, -1, jobId) > 0 then
|
93
105
|
reAddJobWithNewPriority( prioritizedKey, markerKey, target,
|
94
|
-
|
106
|
+
priorityCounterKey, ARGV[4] == '1', priority, jobId, isPausedOrMaxed)
|
95
107
|
end
|
96
108
|
rcall("HSET", jobKey, "priority", priority)
|
97
109
|
return 0
|
@@ -102,6 +114,6 @@ end
|
|
102
114
|
export const changePriority = {
|
103
115
|
name: 'changePriority',
|
104
116
|
content,
|
105
|
-
keys:
|
117
|
+
keys: 7,
|
106
118
|
};
|
107
|
-
//# sourceMappingURL=changePriority-
|
119
|
+
//# sourceMappingURL=changePriority-7.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"changePriority-7.js","sourceRoot":"","sources":["../../../src/scripts/changePriority-7.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHf,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -67,14 +67,14 @@ end
|
|
67
67
|
--[[
|
68
68
|
Add marker if needed when a job is available.
|
69
69
|
]]
|
70
|
-
local function addBaseMarkerIfNeeded(markerKey,
|
71
|
-
if not
|
70
|
+
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
71
|
+
if not isPausedOrMaxed then
|
72
72
|
rcall("ZADD", markerKey, 0, "0")
|
73
73
|
end
|
74
74
|
end
|
75
|
-
local function addJobInTargetList(targetKey, markerKey, pushCmd,
|
75
|
+
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
|
76
76
|
rcall(pushCmd, targetKey, jobId)
|
77
|
-
addBaseMarkerIfNeeded(markerKey,
|
77
|
+
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
78
78
|
end
|
79
79
|
--[[
|
80
80
|
Functions to destructure job key.
|
@@ -90,17 +90,26 @@ end
|
|
90
90
|
Function to check for the meta.paused key to decide if we are paused or not
|
91
91
|
(since an empty list and !EXISTS are not really the same).
|
92
92
|
]]
|
93
|
-
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
94
|
-
|
95
|
-
|
96
|
-
else
|
93
|
+
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
|
94
|
+
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
|
95
|
+
if queueAttributes[1] then
|
97
96
|
return pausedKey, true
|
97
|
+
else
|
98
|
+
if queueAttributes[2] then
|
99
|
+
local activeCount = rcall("LLEN", activeKey)
|
100
|
+
if activeCount >= tonumber(queueAttributes[2]) then
|
101
|
+
return waitKey, true
|
102
|
+
else
|
103
|
+
return waitKey, false
|
104
|
+
end
|
105
|
+
end
|
98
106
|
end
|
107
|
+
return waitKey, false
|
99
108
|
end
|
100
109
|
local function moveParentToWait(parentPrefix, parentId, emitEvent)
|
101
|
-
local parentTarget,
|
102
|
-
parentPrefix .. "paused")
|
103
|
-
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH",
|
110
|
+
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
|
111
|
+
parentPrefix .. "wait", parentPrefix .. "paused")
|
112
|
+
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
|
104
113
|
if emitEvent then
|
105
114
|
local parentEventStream = parentPrefix .. "events"
|
106
115
|
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cleanJobsInSet-2.js","sourceRoot":"","sources":["../../../src/scripts/cleanJobsInSet-2.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"cleanJobsInSet-2.js","sourceRoot":"","sources":["../../../src/scripts/cleanJobsInSet-2.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Sf,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -42,14 +42,14 @@ end
|
|
42
42
|
--[[
|
43
43
|
Add marker if needed when a job is available.
|
44
44
|
]]
|
45
|
-
local function addBaseMarkerIfNeeded(markerKey,
|
46
|
-
if not
|
45
|
+
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
46
|
+
if not isPausedOrMaxed then
|
47
47
|
rcall("ZADD", markerKey, 0, "0")
|
48
48
|
end
|
49
49
|
end
|
50
|
-
local function addJobInTargetList(targetKey, markerKey, pushCmd,
|
50
|
+
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
|
51
51
|
rcall(pushCmd, targetKey, jobId)
|
52
|
-
addBaseMarkerIfNeeded(markerKey,
|
52
|
+
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
|
53
53
|
end
|
54
54
|
--[[
|
55
55
|
Functions to destructure job key.
|
@@ -65,17 +65,26 @@ end
|
|
65
65
|
Function to check for the meta.paused key to decide if we are paused or not
|
66
66
|
(since an empty list and !EXISTS are not really the same).
|
67
67
|
]]
|
68
|
-
local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
|
69
|
-
|
70
|
-
|
71
|
-
else
|
68
|
+
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
|
69
|
+
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
|
70
|
+
if queueAttributes[1] then
|
72
71
|
return pausedKey, true
|
72
|
+
else
|
73
|
+
if queueAttributes[2] then
|
74
|
+
local activeCount = rcall("LLEN", activeKey)
|
75
|
+
if activeCount >= tonumber(queueAttributes[2]) then
|
76
|
+
return waitKey, true
|
77
|
+
else
|
78
|
+
return waitKey, false
|
79
|
+
end
|
80
|
+
end
|
73
81
|
end
|
82
|
+
return waitKey, false
|
74
83
|
end
|
75
84
|
local function moveParentToWait(parentPrefix, parentId, emitEvent)
|
76
|
-
local parentTarget,
|
77
|
-
parentPrefix .. "paused")
|
78
|
-
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH",
|
85
|
+
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
|
86
|
+
parentPrefix .. "wait", parentPrefix .. "paused")
|
87
|
+
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
|
79
88
|
if emitEvent then
|
80
89
|
local parentEventStream = parentPrefix .. "events"
|
81
90
|
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"drain-4.js","sourceRoot":"","sources":["../../../src/scripts/drain-4.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"drain-4.js","sourceRoot":"","sources":["../../../src/scripts/drain-4.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Mf,CAAC;AACF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,IAAI,EAAE,OAAO;IACb,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -17,18 +17,17 @@ local prioritizedKey = KEYS[4]
|
|
17
17
|
Function to check for the meta.paused key to decide if we are paused or not
|
18
18
|
(since an empty list and !EXISTS are not really the same).
|
19
19
|
]]
|
20
|
-
local function
|
21
|
-
|
22
|
-
return waitKey, false
|
23
|
-
else
|
24
|
-
return pausedKey, true
|
25
|
-
end
|
20
|
+
local function isQueuePaused(queueMetaKey)
|
21
|
+
return rcall("HEXISTS", queueMetaKey, "paused") == 1
|
26
22
|
end
|
27
23
|
for i = 1, #ARGV do
|
28
24
|
local priority = tonumber(ARGV[i])
|
29
25
|
if priority == 0 then
|
30
|
-
|
31
|
-
|
26
|
+
if isQueuePaused(KEYS[3]) then
|
27
|
+
results[#results+1] = rcall("LLEN", pausedKey)
|
28
|
+
else
|
29
|
+
results[#results+1] = rcall("LLEN", waitKey)
|
30
|
+
end
|
32
31
|
else
|
33
32
|
results[#results+1] = rcall("ZCOUNT", prioritizedKey,
|
34
33
|
priority * 0x100000000, (priority + 1) * 0x100000000 - 1)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getCountsPerPriority-4.js","sourceRoot":"","sources":["../../../src/scripts/getCountsPerPriority-4.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"getCountsPerPriority-4.js","sourceRoot":"","sources":["../../../src/scripts/getCountsPerPriority-4.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCf,CAAC;AACF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,sBAAsB;IAC5B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
export * from './addDelayedJob-6';
|
2
2
|
export * from './addLog-2';
|
3
3
|
export * from './addParentJob-4';
|
4
|
-
export * from './addPrioritizedJob-
|
5
|
-
export * from './addStandardJob-
|
4
|
+
export * from './addPrioritizedJob-8';
|
5
|
+
export * from './addStandardJob-8';
|
6
6
|
export * from './changeDelay-4';
|
7
|
-
export * from './changePriority-
|
7
|
+
export * from './changePriority-7';
|
8
8
|
export * from './cleanJobsInSet-2';
|
9
9
|
export * from './drain-4';
|
10
10
|
export * from './extendLock-2';
|
@@ -16,8 +16,9 @@ export * from './getState-8';
|
|
16
16
|
export * from './getStateV2-8';
|
17
17
|
export * from './isFinished-3';
|
18
18
|
export * from './isJobInList-1';
|
19
|
+
export * from './isMaxed-2';
|
19
20
|
export * from './moveJobFromActiveToWait-10';
|
20
|
-
export * from './moveJobsToWait-
|
21
|
+
export * from './moveJobsToWait-8';
|
21
22
|
export * from './moveStalledJobsToWait-9';
|
22
23
|
export * from './moveToActive-11';
|
23
24
|
export * from './moveToDelayed-8';
|
@@ -26,12 +27,12 @@ export * from './moveToWaitingChildren-5';
|
|
26
27
|
export * from './obliterate-2';
|
27
28
|
export * from './paginate-1';
|
28
29
|
export * from './pause-7';
|
29
|
-
export * from './promote-
|
30
|
+
export * from './promote-9';
|
30
31
|
export * from './releaseLock-1';
|
31
32
|
export * from './removeChildDependency-1';
|
32
|
-
export * from './removeJob-
|
33
|
+
export * from './removeJob-2';
|
33
34
|
export * from './removeRepeatable-2';
|
34
|
-
export * from './reprocessJob-
|
35
|
+
export * from './reprocessJob-8';
|
35
36
|
export * from './retryJob-11';
|
36
37
|
export * from './saveStacktrace-1';
|
37
38
|
export * from './updateData-1';
|