bullmq 5.49.0 → 5.49.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/flow-producer.js +1 -0
- package/dist/cjs/classes/flow-producer.js.map +1 -1
- package/dist/cjs/classes/job.js +3 -0
- package/dist/cjs/classes/job.js.map +1 -1
- package/dist/cjs/classes/worker.js +4 -0
- package/dist/cjs/classes/worker.js.map +1 -1
- package/dist/cjs/commands/includes/moveChildFromDependenciesIfNeeded.lua +15 -31
- package/dist/cjs/commands/includes/moveParentToWait.lua +32 -33
- package/dist/cjs/commands/includes/moveParentToWaitIfNeeded.lua +8 -4
- package/dist/cjs/commands/includes/moveParentToWaitIfNoPendingDependencies.lua +13 -0
- package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +2 -2
- package/dist/cjs/commands/moveStalledJobsToWait-9.lua +0 -2
- package/dist/cjs/commands/moveToFinished-14.lua +5 -3
- package/dist/cjs/commands/moveToWaitingChildren-8.lua +0 -2
- package/dist/cjs/scripts/addDelayedJob-6.js +51 -37
- package/dist/cjs/scripts/addDelayedJob-6.js.map +1 -1
- package/dist/cjs/scripts/addParentJob-4.js +51 -37
- package/dist/cjs/scripts/addParentJob-4.js.map +1 -1
- package/dist/cjs/scripts/addPrioritizedJob-8.js +51 -37
- package/dist/cjs/scripts/addPrioritizedJob-8.js.map +1 -1
- package/dist/cjs/scripts/addStandardJob-8.js +51 -37
- package/dist/cjs/scripts/addStandardJob-8.js.map +1 -1
- package/dist/cjs/scripts/moveStalledJobsToWait-9.js +64 -61
- package/dist/cjs/scripts/moveStalledJobsToWait-9.js.map +1 -1
- package/dist/cjs/scripts/moveToFinished-14.js +69 -63
- package/dist/cjs/scripts/moveToFinished-14.js.map +1 -1
- package/dist/cjs/scripts/moveToWaitingChildren-8.js +64 -61
- package/dist/cjs/scripts/moveToWaitingChildren-8.js.map +1 -1
- package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/classes/flow-producer.js +1 -0
- package/dist/esm/classes/flow-producer.js.map +1 -1
- package/dist/esm/classes/job.d.ts +5 -0
- package/dist/esm/classes/job.js +3 -0
- package/dist/esm/classes/job.js.map +1 -1
- package/dist/esm/classes/worker.js +5 -1
- package/dist/esm/classes/worker.js.map +1 -1
- package/dist/esm/commands/includes/moveChildFromDependenciesIfNeeded.lua +15 -31
- package/dist/esm/commands/includes/moveParentToWait.lua +32 -33
- package/dist/esm/commands/includes/moveParentToWaitIfNeeded.lua +8 -4
- package/dist/esm/commands/includes/moveParentToWaitIfNoPendingDependencies.lua +13 -0
- package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +2 -2
- package/dist/esm/commands/moveStalledJobsToWait-9.lua +0 -2
- package/dist/esm/commands/moveToFinished-14.lua +5 -3
- package/dist/esm/commands/moveToWaitingChildren-8.lua +0 -2
- package/dist/esm/interfaces/job-json.d.ts +1 -0
- package/dist/esm/scripts/addDelayedJob-6.js +51 -37
- package/dist/esm/scripts/addDelayedJob-6.js.map +1 -1
- package/dist/esm/scripts/addParentJob-4.js +51 -37
- package/dist/esm/scripts/addParentJob-4.js.map +1 -1
- package/dist/esm/scripts/addPrioritizedJob-8.js +51 -37
- package/dist/esm/scripts/addPrioritizedJob-8.js.map +1 -1
- package/dist/esm/scripts/addStandardJob-8.js +51 -37
- package/dist/esm/scripts/addStandardJob-8.js.map +1 -1
- package/dist/esm/scripts/moveStalledJobsToWait-9.js +64 -61
- package/dist/esm/scripts/moveStalledJobsToWait-9.js.map +1 -1
- package/dist/esm/scripts/moveToFinished-14.js +69 -63
- package/dist/esm/scripts/moveToFinished-14.js.map +1 -1
- package/dist/esm/scripts/moveToWaitingChildren-8.js +64 -61
- package/dist/esm/scripts/moveToWaitingChildren-8.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
@@ -90,12 +90,19 @@ end
|
|
90
90
|
Validate and move or add dependencies to parent.
|
91
91
|
]]
|
92
92
|
-- Includes
|
93
|
+
--[[
|
94
|
+
Validate and move parent to a wait status (waiting, delayed or prioritized)
|
95
|
+
if no pending dependencies.
|
96
|
+
]]
|
97
|
+
-- Includes
|
93
98
|
--[[
|
94
99
|
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
|
95
100
|
]]
|
101
|
+
-- Includes
|
96
102
|
--[[
|
97
|
-
|
103
|
+
Move parent to a wait status (wait, prioritized or delayed)
|
98
104
|
]]
|
105
|
+
-- Includes
|
99
106
|
--[[
|
100
107
|
Add delay marker if needed.
|
101
108
|
]]
|
@@ -190,52 +197,59 @@ local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
|
|
190
197
|
return waitKey, false
|
191
198
|
end
|
192
199
|
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
|
193
|
-
local
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
200
|
+
local parentWaitKey = parentQueueKey .. ":wait"
|
201
|
+
local parentPausedKey = parentQueueKey .. ":paused"
|
202
|
+
local parentActiveKey = parentQueueKey .. ":active"
|
203
|
+
local parentMetaKey = parentQueueKey .. ":meta"
|
204
|
+
local parentMarkerKey = parentQueueKey .. ":marker"
|
205
|
+
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
|
206
|
+
local priority = tonumber(jobAttributes[1]) or 0
|
207
|
+
local delay = tonumber(jobAttributes[2]) or 0
|
208
|
+
-- ignore dependencies if any left
|
209
|
+
rcall("HSET", parentKey, "igdp", 1)
|
210
|
+
if delay > 0 then
|
211
|
+
local delayedTimestamp = tonumber(timestamp) + delay
|
212
|
+
local score = delayedTimestamp * 0x1000
|
213
|
+
local parentDelayedKey = parentQueueKey .. ":delayed"
|
214
|
+
rcall("ZADD", parentDelayedKey, score, parentId)
|
215
|
+
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
|
216
|
+
delayedTimestamp)
|
217
|
+
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
|
218
|
+
else
|
219
|
+
if priority == 0 then
|
220
|
+
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
|
221
|
+
parentWaitKey, parentPausedKey)
|
222
|
+
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
|
213
223
|
else
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
|
218
|
-
else
|
219
|
-
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
|
220
|
-
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
|
221
|
-
parentQueueKey .. ":pc", isPausedOrMaxed)
|
222
|
-
end
|
223
|
-
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
|
224
|
-
"waiting-children")
|
224
|
+
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
|
225
|
+
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
|
226
|
+
parentQueueKey .. ":pc", isPausedOrMaxed)
|
225
227
|
end
|
228
|
+
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
|
229
|
+
"waiting-children")
|
226
230
|
end
|
227
231
|
end
|
228
|
-
local function moveParentToWaitIfNeeded(parentQueueKey,
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
+
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
|
233
|
+
if rcall("EXISTS", parentKey) == 1 then
|
234
|
+
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
|
235
|
+
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
|
236
|
+
rcall("ZREM", parentWaitingChildrenKey, parentId)
|
237
|
+
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
|
232
238
|
end
|
239
|
+
end
|
240
|
+
end
|
241
|
+
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
|
242
|
+
parentId, timestamp)
|
243
|
+
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
|
244
|
+
if doNotHavePendingDependencies then
|
245
|
+
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
|
246
|
+
end
|
233
247
|
end
|
234
248
|
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
|
235
249
|
parentId, jobIdKey, returnvalue, timestamp )
|
236
250
|
local processedSet = parentKey .. ":processed"
|
237
251
|
rcall("HSET", processedSet, jobIdKey, returnvalue)
|
238
|
-
|
252
|
+
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
|
239
253
|
end
|
240
254
|
local function updateExistingJobsParent(parentKey, parent, parentData,
|
241
255
|
parentDependenciesKey, completedKey,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"addParentJob-4.js","sourceRoot":"","sources":["../../../src/scripts/addParentJob-4.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"addParentJob-4.js","sourceRoot":"","sources":["../../../src/scripts/addParentJob-4.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkWf,CAAC;AACF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,cAAc;IACpB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -152,12 +152,19 @@ end
|
|
152
152
|
Validate and move or add dependencies to parent.
|
153
153
|
]]
|
154
154
|
-- Includes
|
155
|
+
--[[
|
156
|
+
Validate and move parent to a wait status (waiting, delayed or prioritized)
|
157
|
+
if no pending dependencies.
|
158
|
+
]]
|
159
|
+
-- Includes
|
155
160
|
--[[
|
156
161
|
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
|
157
162
|
]]
|
163
|
+
-- Includes
|
158
164
|
--[[
|
159
|
-
|
165
|
+
Move parent to a wait status (wait, prioritized or delayed)
|
160
166
|
]]
|
167
|
+
-- Includes
|
161
168
|
--[[
|
162
169
|
Add delay marker if needed.
|
163
170
|
]]
|
@@ -227,52 +234,59 @@ local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
|
|
227
234
|
return waitKey, false
|
228
235
|
end
|
229
236
|
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
|
230
|
-
local
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
237
|
+
local parentWaitKey = parentQueueKey .. ":wait"
|
238
|
+
local parentPausedKey = parentQueueKey .. ":paused"
|
239
|
+
local parentActiveKey = parentQueueKey .. ":active"
|
240
|
+
local parentMetaKey = parentQueueKey .. ":meta"
|
241
|
+
local parentMarkerKey = parentQueueKey .. ":marker"
|
242
|
+
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
|
243
|
+
local priority = tonumber(jobAttributes[1]) or 0
|
244
|
+
local delay = tonumber(jobAttributes[2]) or 0
|
245
|
+
-- ignore dependencies if any left
|
246
|
+
rcall("HSET", parentKey, "igdp", 1)
|
247
|
+
if delay > 0 then
|
248
|
+
local delayedTimestamp = tonumber(timestamp) + delay
|
249
|
+
local score = delayedTimestamp * 0x1000
|
250
|
+
local parentDelayedKey = parentQueueKey .. ":delayed"
|
251
|
+
rcall("ZADD", parentDelayedKey, score, parentId)
|
252
|
+
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
|
253
|
+
delayedTimestamp)
|
254
|
+
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
|
255
|
+
else
|
256
|
+
if priority == 0 then
|
257
|
+
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
|
258
|
+
parentWaitKey, parentPausedKey)
|
259
|
+
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
|
250
260
|
else
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
|
255
|
-
else
|
256
|
-
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
|
257
|
-
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
|
258
|
-
parentQueueKey .. ":pc", isPausedOrMaxed)
|
259
|
-
end
|
260
|
-
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
|
261
|
-
"waiting-children")
|
261
|
+
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
|
262
|
+
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
|
263
|
+
parentQueueKey .. ":pc", isPausedOrMaxed)
|
262
264
|
end
|
265
|
+
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
|
266
|
+
"waiting-children")
|
263
267
|
end
|
264
268
|
end
|
265
|
-
local function moveParentToWaitIfNeeded(parentQueueKey,
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
+
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
|
270
|
+
if rcall("EXISTS", parentKey) == 1 then
|
271
|
+
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
|
272
|
+
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
|
273
|
+
rcall("ZREM", parentWaitingChildrenKey, parentId)
|
274
|
+
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
|
269
275
|
end
|
276
|
+
end
|
277
|
+
end
|
278
|
+
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
|
279
|
+
parentId, timestamp)
|
280
|
+
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
|
281
|
+
if doNotHavePendingDependencies then
|
282
|
+
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
|
283
|
+
end
|
270
284
|
end
|
271
285
|
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
|
272
286
|
parentId, jobIdKey, returnvalue, timestamp )
|
273
287
|
local processedSet = parentKey .. ":processed"
|
274
288
|
rcall("HSET", processedSet, jobIdKey, returnvalue)
|
275
|
-
|
289
|
+
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
|
276
290
|
end
|
277
291
|
local function updateExistingJobsParent(parentKey, parent, parentData,
|
278
292
|
parentDependenciesKey, completedKey,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"addPrioritizedJob-8.js","sourceRoot":"","sources":["../../../src/scripts/addPrioritizedJob-8.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"addPrioritizedJob-8.js","sourceRoot":"","sources":["../../../src/scripts/addPrioritizedJob-8.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Wf,CAAC;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,mBAAmB;IACzB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -136,12 +136,19 @@ end
|
|
136
136
|
Validate and move or add dependencies to parent.
|
137
137
|
]]
|
138
138
|
-- Includes
|
139
|
+
--[[
|
140
|
+
Validate and move parent to a wait status (waiting, delayed or prioritized)
|
141
|
+
if no pending dependencies.
|
142
|
+
]]
|
143
|
+
-- Includes
|
139
144
|
--[[
|
140
145
|
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
|
141
146
|
]]
|
147
|
+
-- Includes
|
142
148
|
--[[
|
143
|
-
|
149
|
+
Move parent to a wait status (wait, prioritized or delayed)
|
144
150
|
]]
|
151
|
+
-- Includes
|
145
152
|
--[[
|
146
153
|
Add delay marker if needed.
|
147
154
|
]]
|
@@ -200,52 +207,59 @@ local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
|
|
200
207
|
return false
|
201
208
|
end
|
202
209
|
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
|
203
|
-
local
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
210
|
+
local parentWaitKey = parentQueueKey .. ":wait"
|
211
|
+
local parentPausedKey = parentQueueKey .. ":paused"
|
212
|
+
local parentActiveKey = parentQueueKey .. ":active"
|
213
|
+
local parentMetaKey = parentQueueKey .. ":meta"
|
214
|
+
local parentMarkerKey = parentQueueKey .. ":marker"
|
215
|
+
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
|
216
|
+
local priority = tonumber(jobAttributes[1]) or 0
|
217
|
+
local delay = tonumber(jobAttributes[2]) or 0
|
218
|
+
-- ignore dependencies if any left
|
219
|
+
rcall("HSET", parentKey, "igdp", 1)
|
220
|
+
if delay > 0 then
|
221
|
+
local delayedTimestamp = tonumber(timestamp) + delay
|
222
|
+
local score = delayedTimestamp * 0x1000
|
223
|
+
local parentDelayedKey = parentQueueKey .. ":delayed"
|
224
|
+
rcall("ZADD", parentDelayedKey, score, parentId)
|
225
|
+
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
|
226
|
+
delayedTimestamp)
|
227
|
+
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
|
228
|
+
else
|
229
|
+
if priority == 0 then
|
230
|
+
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
|
231
|
+
parentWaitKey, parentPausedKey)
|
232
|
+
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
|
223
233
|
else
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
|
228
|
-
else
|
229
|
-
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
|
230
|
-
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
|
231
|
-
parentQueueKey .. ":pc", isPausedOrMaxed)
|
232
|
-
end
|
233
|
-
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
|
234
|
-
"waiting-children")
|
234
|
+
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
|
235
|
+
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
|
236
|
+
parentQueueKey .. ":pc", isPausedOrMaxed)
|
235
237
|
end
|
238
|
+
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
|
239
|
+
"waiting-children")
|
236
240
|
end
|
237
241
|
end
|
238
|
-
local function moveParentToWaitIfNeeded(parentQueueKey,
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
+
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
|
243
|
+
if rcall("EXISTS", parentKey) == 1 then
|
244
|
+
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
|
245
|
+
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
|
246
|
+
rcall("ZREM", parentWaitingChildrenKey, parentId)
|
247
|
+
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
|
242
248
|
end
|
249
|
+
end
|
250
|
+
end
|
251
|
+
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
|
252
|
+
parentId, timestamp)
|
253
|
+
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
|
254
|
+
if doNotHavePendingDependencies then
|
255
|
+
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
|
256
|
+
end
|
243
257
|
end
|
244
258
|
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
|
245
259
|
parentId, jobIdKey, returnvalue, timestamp )
|
246
260
|
local processedSet = parentKey .. ":processed"
|
247
261
|
rcall("HSET", processedSet, jobIdKey, returnvalue)
|
248
|
-
|
262
|
+
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
|
249
263
|
end
|
250
264
|
local function updateExistingJobsParent(parentKey, parent, parentData,
|
251
265
|
parentDependenciesKey, completedKey,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"addStandardJob-8.js","sourceRoot":"","sources":["../../../src/scripts/addStandardJob-8.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"addStandardJob-8.js","sourceRoot":"","sources":["../../../src/scripts/addStandardJob-8.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgXf,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -75,12 +75,19 @@ end
|
|
75
75
|
Function to recursively move from waitingChildren to failed.
|
76
76
|
]]
|
77
77
|
-- Includes
|
78
|
+
--[[
|
79
|
+
Validate and move parent to a wait status (waiting, delayed or prioritized)
|
80
|
+
if no pending dependencies.
|
81
|
+
]]
|
82
|
+
-- Includes
|
78
83
|
--[[
|
79
84
|
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
|
80
85
|
]]
|
86
|
+
-- Includes
|
81
87
|
--[[
|
82
|
-
|
88
|
+
Move parent to a wait status (wait, prioritized or delayed)
|
83
89
|
]]
|
90
|
+
-- Includes
|
84
91
|
--[[
|
85
92
|
Add delay marker if needed.
|
86
93
|
]]
|
@@ -139,46 +146,53 @@ local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
|
|
139
146
|
return false
|
140
147
|
end
|
141
148
|
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
|
142
|
-
local
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
149
|
+
local parentWaitKey = parentQueueKey .. ":wait"
|
150
|
+
local parentPausedKey = parentQueueKey .. ":paused"
|
151
|
+
local parentActiveKey = parentQueueKey .. ":active"
|
152
|
+
local parentMetaKey = parentQueueKey .. ":meta"
|
153
|
+
local parentMarkerKey = parentQueueKey .. ":marker"
|
154
|
+
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
|
155
|
+
local priority = tonumber(jobAttributes[1]) or 0
|
156
|
+
local delay = tonumber(jobAttributes[2]) or 0
|
157
|
+
-- ignore dependencies if any left
|
158
|
+
rcall("HSET", parentKey, "igdp", 1)
|
159
|
+
if delay > 0 then
|
160
|
+
local delayedTimestamp = tonumber(timestamp) + delay
|
161
|
+
local score = delayedTimestamp * 0x1000
|
162
|
+
local parentDelayedKey = parentQueueKey .. ":delayed"
|
163
|
+
rcall("ZADD", parentDelayedKey, score, parentId)
|
164
|
+
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
|
165
|
+
delayedTimestamp)
|
166
|
+
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
|
167
|
+
else
|
168
|
+
if priority == 0 then
|
169
|
+
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
|
170
|
+
parentWaitKey, parentPausedKey)
|
171
|
+
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
|
162
172
|
else
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
|
167
|
-
else
|
168
|
-
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
|
169
|
-
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
|
170
|
-
parentQueueKey .. ":pc", isPausedOrMaxed)
|
171
|
-
end
|
172
|
-
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
|
173
|
-
"waiting-children")
|
173
|
+
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
|
174
|
+
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
|
175
|
+
parentQueueKey .. ":pc", isPausedOrMaxed)
|
174
176
|
end
|
177
|
+
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
|
178
|
+
"waiting-children")
|
175
179
|
end
|
176
180
|
end
|
177
|
-
local function moveParentToWaitIfNeeded(parentQueueKey,
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
+
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
|
182
|
+
if rcall("EXISTS", parentKey) == 1 then
|
183
|
+
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
|
184
|
+
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
|
185
|
+
rcall("ZREM", parentWaitingChildrenKey, parentId)
|
186
|
+
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
|
181
187
|
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
|
191
|
+
parentId, timestamp)
|
192
|
+
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
|
193
|
+
if doNotHavePendingDependencies then
|
194
|
+
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
|
195
|
+
end
|
182
196
|
end
|
183
197
|
--[[
|
184
198
|
Function to remove deduplication key if needed.
|
@@ -369,38 +383,27 @@ moveParentToFailedIfNeeded = function (parentQueueKey, parentKey, parentId, jobI
|
|
369
383
|
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
|
370
384
|
local parentDelayedKey = parentQueueKey .. ":delayed"
|
371
385
|
local parentPrioritizedKey = parentQueueKey .. ":prioritized"
|
372
|
-
local
|
386
|
+
local parentWaitingChildrenOrDelayedKey
|
373
387
|
local prevState
|
374
388
|
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
|
375
|
-
|
389
|
+
parentWaitingChildrenOrDelayedKey = parentWaitingChildrenKey
|
376
390
|
prevState = "waiting-children"
|
377
391
|
elseif rcall("ZSCORE", parentDelayedKey, parentId) then
|
378
|
-
|
392
|
+
parentWaitingChildrenOrDelayedKey = parentDelayedKey
|
379
393
|
prevState = "delayed"
|
380
|
-
|
381
|
-
parentWaitingChildrenOrDelayedOrPrioritizedKey = parentPrioritizedKey
|
382
|
-
prevState = "prioritized"
|
394
|
+
rcall("HSET", parentKey, "delay", 0)
|
383
395
|
end
|
384
|
-
if
|
385
|
-
rcall("ZREM",
|
396
|
+
if parentWaitingChildrenOrDelayedKey then
|
397
|
+
rcall("ZREM", parentWaitingChildrenOrDelayedKey, parentId)
|
386
398
|
local parentQueuePrefix = parentQueueKey .. ":"
|
387
399
|
local parentFailedKey = parentQueueKey .. ":failed"
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
|
392
|
-
failedReason, "prev", prevState)
|
393
|
-
local jobAttributes = rcall("HMGET", parentKey, "parent", "deid", "opts")
|
394
|
-
removeDeduplicationKeyIfNeeded(parentQueueKey .. ":", jobAttributes[2])
|
395
|
-
moveChildFromDependenciesIfNeeded(jobAttributes[1], parentKey, failedReason, timestamp)
|
396
|
-
local parentRawOpts = jobAttributes[3]
|
397
|
-
local parentOpts = cjson.decode(parentRawOpts)
|
398
|
-
removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
|
400
|
+
local deferredFailure = "child " .. jobIdKey .. " failed"
|
401
|
+
rcall("HSET", parentKey, "defa", deferredFailure)
|
402
|
+
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
|
399
403
|
else
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
rcall("ZADD", grandParentUnsuccesssfulSet, timestamp, parentKey)
|
404
|
+
if not rcall("ZSCORE", parentQueueKey .. ":failed", parentId) then
|
405
|
+
local deferredFailure = "child " .. jobIdKey .. " failed"
|
406
|
+
rcall("HSET", parentKey, "defa", deferredFailure)
|
404
407
|
end
|
405
408
|
end
|
406
409
|
end
|
@@ -426,11 +429,11 @@ moveChildFromDependenciesIfNeeded = function (rawParentData, childKey, failedRea
|
|
426
429
|
if rcall("SREM", parentDependenciesChildrenKey, childKey) == 1 then
|
427
430
|
local parentFailedChildrenKey = parentKey .. ":failed"
|
428
431
|
rcall("HSET", parentFailedChildrenKey, childKey, failedReason)
|
429
|
-
|
432
|
+
moveParentToWaitIfNeeded(parentData['queueKey'], parentKey, parentData['id'], timestamp)
|
430
433
|
end
|
431
434
|
elseif parentData['idof'] or parentData['rdof'] then
|
432
435
|
if rcall("SREM", parentDependenciesChildrenKey, childKey) == 1 then
|
433
|
-
|
436
|
+
moveParentToWaitIfNoPendingDependencies(parentData['queueKey'], parentDependenciesChildrenKey,
|
434
437
|
parentKey, parentData['id'], timestamp)
|
435
438
|
if parentData['idof'] then
|
436
439
|
local parentFailedChildrenKey = parentKey .. ":failed"
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"moveStalledJobsToWait-9.js","sourceRoot":"","sources":["../../../src/scripts/moveStalledJobsToWait-9.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"moveStalledJobsToWait-9.js","sourceRoot":"","sources":["../../../src/scripts/moveStalledJobsToWait-9.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgiBf,CAAC;AACF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,uBAAuB;IAC7B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|