bullmq 5.41.5 → 5.41.6
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-scheduler.js +40 -15
- package/dist/cjs/classes/job-scheduler.js.map +1 -1
- package/dist/cjs/classes/job.js +9 -12
- package/dist/cjs/classes/job.js.map +1 -1
- package/dist/cjs/classes/scripts.js +11 -1
- package/dist/cjs/classes/scripts.js.map +1 -1
- package/dist/cjs/commands/addDelayedJob-6.lua +5 -2
- package/dist/cjs/commands/addJobScheduler-10.lua +130 -0
- package/dist/cjs/commands/includes/addDelayedJob.lua +2 -7
- package/dist/cjs/commands/includes/getOrSetMaxEvents.lua +6 -6
- package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +47 -2
- package/dist/cjs/commands/moveStalledJobsToWait-9.lua +1 -1
- package/dist/cjs/commands/moveToFinished-14.lua +1 -1
- package/dist/cjs/scripts/addDelayedJob-6.js +41 -43
- package/dist/cjs/scripts/addDelayedJob-6.js.map +1 -1
- package/dist/cjs/scripts/{addJobScheduler-6.js → addJobScheduler-10.js} +208 -42
- package/dist/cjs/scripts/addJobScheduler-10.js.map +1 -0
- package/dist/cjs/scripts/addParentJob-4.js +6 -6
- package/dist/cjs/scripts/addPrioritizedJob-8.js +6 -6
- package/dist/cjs/scripts/addStandardJob-8.js +6 -6
- package/dist/cjs/scripts/changeDelay-4.js +6 -6
- package/dist/cjs/scripts/index.js +1 -1
- package/dist/cjs/scripts/index.js.map +1 -1
- package/dist/cjs/scripts/moveJobFromActiveToWait-9.js +6 -6
- package/dist/cjs/scripts/moveJobsToWait-8.js +6 -6
- package/dist/cjs/scripts/moveStalledJobsToWait-9.js +49 -9
- package/dist/cjs/scripts/moveStalledJobsToWait-9.js.map +1 -1
- package/dist/cjs/scripts/moveToDelayed-8.js +6 -6
- package/dist/cjs/scripts/moveToFinished-14.js +49 -9
- package/dist/cjs/scripts/moveToFinished-14.js.map +1 -1
- package/dist/cjs/scripts/removeJob-3.js +6 -6
- package/dist/cjs/scripts/reprocessJob-8.js +6 -6
- package/dist/cjs/scripts/retryJob-11.js +6 -6
- package/dist/cjs/scripts/updateJobScheduler-7.js +8 -41
- package/dist/cjs/scripts/updateJobScheduler-7.js.map +1 -1
- package/dist/cjs/scripts/updateProgress-3.js +6 -6
- package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/classes/job-scheduler.d.ts +1 -0
- package/dist/esm/classes/job-scheduler.js +40 -15
- package/dist/esm/classes/job-scheduler.js.map +1 -1
- package/dist/esm/classes/job.js +9 -12
- package/dist/esm/classes/job.js.map +1 -1
- package/dist/esm/classes/scripts.d.ts +2 -2
- package/dist/esm/classes/scripts.js +11 -1
- package/dist/esm/classes/scripts.js.map +1 -1
- package/dist/esm/commands/addDelayedJob-6.lua +5 -2
- package/dist/esm/commands/addJobScheduler-10.lua +130 -0
- package/dist/esm/commands/includes/addDelayedJob.lua +2 -7
- package/dist/esm/commands/includes/getOrSetMaxEvents.lua +6 -6
- package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +47 -2
- package/dist/esm/commands/moveStalledJobsToWait-9.lua +1 -1
- package/dist/esm/commands/moveToFinished-14.lua +1 -1
- package/dist/esm/scripts/addDelayedJob-6.js +41 -43
- package/dist/esm/scripts/addDelayedJob-6.js.map +1 -1
- package/dist/esm/scripts/{addJobScheduler-6.js → addJobScheduler-10.js} +208 -42
- package/dist/esm/scripts/addJobScheduler-10.js.map +1 -0
- package/dist/esm/scripts/addParentJob-4.js +6 -6
- package/dist/esm/scripts/addPrioritizedJob-8.js +6 -6
- package/dist/esm/scripts/addStandardJob-8.js +6 -6
- package/dist/esm/scripts/changeDelay-4.js +6 -6
- package/dist/esm/scripts/index.d.ts +1 -1
- package/dist/esm/scripts/index.js +1 -1
- package/dist/esm/scripts/index.js.map +1 -1
- package/dist/esm/scripts/moveJobFromActiveToWait-9.js +6 -6
- package/dist/esm/scripts/moveJobsToWait-8.js +6 -6
- package/dist/esm/scripts/moveStalledJobsToWait-9.js +49 -9
- package/dist/esm/scripts/moveStalledJobsToWait-9.js.map +1 -1
- package/dist/esm/scripts/moveToDelayed-8.js +6 -6
- package/dist/esm/scripts/moveToFinished-14.js +49 -9
- package/dist/esm/scripts/moveToFinished-14.js.map +1 -1
- package/dist/esm/scripts/removeJob-3.js +6 -6
- package/dist/esm/scripts/reprocessJob-8.js +6 -6
- package/dist/esm/scripts/retryJob-11.js +6 -6
- package/dist/esm/scripts/updateJobScheduler-7.js +8 -41
- package/dist/esm/scripts/updateJobScheduler-7.js.map +1 -1
- package/dist/esm/scripts/updateProgress-3.js +6 -6
- 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
- package/dist/cjs/commands/addJobScheduler-6.lua +0 -72
- package/dist/cjs/scripts/addJobScheduler-6.js.map +0 -1
- package/dist/esm/commands/addJobScheduler-6.lua +0 -72
- package/dist/esm/scripts/addJobScheduler-6.js.map +0 -1
- /package/dist/esm/scripts/{addJobScheduler-6.d.ts → addJobScheduler-10.d.ts} +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"addJobScheduler-10.js","sourceRoot":"","sources":["../../../src/scripts/addJobScheduler-10.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyaf,CAAC;AACW,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,iBAAiB;IACvB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
|
@@ -71,12 +71,12 @@ end
|
|
71
71
|
Function to get max events value or set by default 10000.
|
72
72
|
]]
|
73
73
|
local function getOrSetMaxEvents(metaKey)
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
74
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
75
|
+
if not maxEvents then
|
76
|
+
maxEvents = 10000
|
77
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
78
|
+
end
|
79
|
+
return maxEvents
|
80
80
|
end
|
81
81
|
--[[
|
82
82
|
Function to handle the case when job is duplicated.
|
@@ -133,12 +133,12 @@ end
|
|
133
133
|
Function to get max events value or set by default 10000.
|
134
134
|
]]
|
135
135
|
local function getOrSetMaxEvents(metaKey)
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
136
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
137
|
+
if not maxEvents then
|
138
|
+
maxEvents = 10000
|
139
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
140
|
+
end
|
141
|
+
return maxEvents
|
142
142
|
end
|
143
143
|
--[[
|
144
144
|
Function to handle the case when job is duplicated.
|
@@ -97,12 +97,12 @@ end
|
|
97
97
|
Function to get max events value or set by default 10000.
|
98
98
|
]]
|
99
99
|
local function getOrSetMaxEvents(metaKey)
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
100
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
101
|
+
if not maxEvents then
|
102
|
+
maxEvents = 10000
|
103
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
104
|
+
end
|
105
|
+
return maxEvents
|
106
106
|
end
|
107
107
|
--[[
|
108
108
|
Function to check for the meta.paused key to decide if we are paused or not
|
@@ -73,12 +73,12 @@ end
|
|
73
73
|
Function to get max events value or set by default 10000.
|
74
74
|
]]
|
75
75
|
local function getOrSetMaxEvents(metaKey)
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
76
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
77
|
+
if not maxEvents then
|
78
|
+
maxEvents = 10000
|
79
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
80
|
+
end
|
81
|
+
return maxEvents
|
82
82
|
end
|
83
83
|
if rcall("EXISTS", ARGV[4]) == 1 then
|
84
84
|
local jobId = ARGV[3]
|
@@ -2,7 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
const tslib_1 = require("tslib");
|
4
4
|
tslib_1.__exportStar(require("./addDelayedJob-6"), exports);
|
5
|
-
tslib_1.__exportStar(require("./addJobScheduler-
|
5
|
+
tslib_1.__exportStar(require("./addJobScheduler-10"), exports);
|
6
6
|
tslib_1.__exportStar(require("./addLog-2"), exports);
|
7
7
|
tslib_1.__exportStar(require("./addParentJob-4"), exports);
|
8
8
|
tslib_1.__exportStar(require("./addPrioritizedJob-8"), exports);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scripts/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scripts/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,+DAAqC;AACrC,qDAA2B;AAC3B,2DAAiC;AACjC,gEAAsC;AACtC,+DAAqC;AACrC,6DAAmC;AACnC,0DAAgC;AAChC,6DAAmC;AACnC,6DAAmC;AACnC,oDAA0B;AAC1B,yDAA+B;AAC/B,0DAAgC;AAChC,wDAA8B;AAC9B,mEAAyC;AACzC,8DAAoC;AACpC,wDAA8B;AAC9B,8DAAoC;AACpC,uDAA6B;AAC7B,yDAA+B;AAC/B,yDAA+B;AAC/B,0DAAgC;AAChC,sDAA4B;AAC5B,sEAA4C;AAC5C,6DAAmC;AACnC,oEAA0C;AAC1C,4DAAkC;AAClC,4DAAkC;AAClC,8DAAoC;AACpC,oEAA0C;AAC1C,yDAA+B;AAC/B,uDAA6B;AAC7B,oDAA0B;AAC1B,sDAA4B;AAC5B,0DAAgC;AAChC,oEAA0C;AAC1C,wDAA8B;AAC9B,iEAAuC;AACvC,+DAAqC;AACrC,2DAAiC;AACjC,wDAA8B;AAC9B,6DAAmC;AACnC,yDAA+B;AAC/B,iEAAuC;AACvC,6DAAmC;AACnC,wEAA8C"}
|
@@ -48,12 +48,12 @@ end
|
|
48
48
|
Function to get max events value or set by default 10000.
|
49
49
|
]]
|
50
50
|
local function getOrSetMaxEvents(metaKey)
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
51
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
52
|
+
if not maxEvents then
|
53
|
+
maxEvents = 10000
|
54
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
55
|
+
end
|
56
|
+
return maxEvents
|
57
57
|
end
|
58
58
|
--[[
|
59
59
|
Function to check for the meta.paused key to decide if we are paused or not
|
@@ -52,12 +52,12 @@ end
|
|
52
52
|
Function to get max events value or set by default 10000.
|
53
53
|
]]
|
54
54
|
local function getOrSetMaxEvents(metaKey)
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
55
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
56
|
+
if not maxEvents then
|
57
|
+
maxEvents = 10000
|
58
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
59
|
+
end
|
60
|
+
return maxEvents
|
61
61
|
end
|
62
62
|
--[[
|
63
63
|
Function to check for the meta.paused key to decide if we are paused or not
|
@@ -361,8 +361,11 @@ local function removeJobsOnFail(queueKeyPrefix, failedKey, jobId, opts, timestam
|
|
361
361
|
end
|
362
362
|
end
|
363
363
|
end
|
364
|
-
local function moveParentFromWaitingChildrenToFailed(
|
365
|
-
|
364
|
+
local function moveParentFromWaitingChildrenToFailed(parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
|
365
|
+
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
|
366
|
+
local parentDelayedKey = parentQueueKey .. ":delayed"
|
367
|
+
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) ~= false then
|
368
|
+
rcall("ZREM", parentWaitingChildrenKey, parentId)
|
366
369
|
local parentQueuePrefix = parentQueueKey .. ":"
|
367
370
|
local parentFailedKey = parentQueueKey .. ":failed"
|
368
371
|
rcall("ZADD", parentFailedKey, timestamp, parentId)
|
@@ -398,6 +401,43 @@ local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey,
|
|
398
401
|
local parentRawOpts = jobAttributes[3]
|
399
402
|
local parentOpts = cjson.decode(parentRawOpts)
|
400
403
|
removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
|
404
|
+
elseif rcall("ZSCORE", parentDelayedKey, parentId) ~= false then
|
405
|
+
rcall("ZREM", parentDelayedKey, parentId)
|
406
|
+
local parentQueuePrefix = parentQueueKey .. ":"
|
407
|
+
local parentFailedKey = parentQueueKey .. ":failed"
|
408
|
+
rcall("ZADD", parentFailedKey, timestamp, parentId)
|
409
|
+
local failedReason = "child " .. jobIdKey .. " failed"
|
410
|
+
rcall("HMSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
|
411
|
+
rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
|
412
|
+
failedReason, "prev", "delayed")
|
413
|
+
local jobAttributes = rcall("HMGET", parentKey, "parent", "deid", "opts")
|
414
|
+
removeDeduplicationKeyIfNeeded(parentQueueKey .. ":", jobAttributes[2])
|
415
|
+
if jobAttributes[1] then
|
416
|
+
local parentData = cjson.decode(jobAttributes[1])
|
417
|
+
if parentData['fpof'] then
|
418
|
+
moveParentFromWaitingChildrenToFailed(
|
419
|
+
parentData['queueKey'],
|
420
|
+
parentData['queueKey'] .. ':' .. parentData['id'],
|
421
|
+
parentData['id'],
|
422
|
+
parentKey,
|
423
|
+
timestamp
|
424
|
+
)
|
425
|
+
elseif parentData['idof'] or parentData['rdof'] then
|
426
|
+
local grandParentKey = parentData['queueKey'] .. ':' .. parentData['id']
|
427
|
+
local grandParentDependenciesSet = grandParentKey .. ":dependencies"
|
428
|
+
if rcall("SREM", grandParentDependenciesSet, parentKey) == 1 then
|
429
|
+
moveParentToWaitIfNeeded(parentData['queueKey'], grandParentDependenciesSet,
|
430
|
+
grandParentKey, parentData['id'], timestamp)
|
431
|
+
if parentData['idof'] then
|
432
|
+
local grandParentFailedSet = grandParentKey .. ":failed"
|
433
|
+
rcall("HSET", grandParentFailedSet, parentKey, failedReason)
|
434
|
+
end
|
435
|
+
end
|
436
|
+
end
|
437
|
+
end
|
438
|
+
local parentRawOpts = jobAttributes[3]
|
439
|
+
local parentOpts = cjson.decode(parentRawOpts)
|
440
|
+
removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
|
401
441
|
end
|
402
442
|
end
|
403
443
|
--[[
|
@@ -408,12 +448,12 @@ end
|
|
408
448
|
Function to get max events value or set by default 10000.
|
409
449
|
]]
|
410
450
|
local function getOrSetMaxEvents(metaKey)
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
451
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
452
|
+
if not maxEvents then
|
453
|
+
maxEvents = 10000
|
454
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
455
|
+
end
|
456
|
+
return maxEvents
|
417
457
|
end
|
418
458
|
local function trimEvents(metaKey, eventStreamKey)
|
419
459
|
local maxEvents = getOrSetMaxEvents(metaKey)
|
@@ -476,7 +516,7 @@ if (#stalling > 0) then
|
|
476
516
|
rcall("XADD", eventStreamKey, "*", "event",
|
477
517
|
"failed", "jobId", jobId, 'prev', 'active',
|
478
518
|
'failedReason', failedReason)
|
479
|
-
if rawParentData
|
519
|
+
if rawParentData then
|
480
520
|
if opts['fpof'] then
|
481
521
|
local parentData = cjson.decode(rawParentData)
|
482
522
|
moveParentFromWaitingChildrenToFailed(
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAqjBS,CAAC;AACb,QAAA,qBAAqB,GAAG;IACnC,IAAI,EAAE,uBAAuB;IAC7B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -80,12 +80,12 @@ end
|
|
80
80
|
Function to get max events value or set by default 10000.
|
81
81
|
]]
|
82
82
|
local function getOrSetMaxEvents(metaKey)
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
83
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
84
|
+
if not maxEvents then
|
85
|
+
maxEvents = 10000
|
86
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
87
|
+
end
|
88
|
+
return maxEvents
|
89
89
|
end
|
90
90
|
local function removeLock(jobKey, stalledKey, token, jobId)
|
91
91
|
if token ~= "0" then
|
@@ -456,8 +456,11 @@ local function removeJobsOnFail(queueKeyPrefix, failedKey, jobId, opts, timestam
|
|
456
456
|
end
|
457
457
|
end
|
458
458
|
end
|
459
|
-
local function moveParentFromWaitingChildrenToFailed(
|
460
|
-
|
459
|
+
local function moveParentFromWaitingChildrenToFailed(parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
|
460
|
+
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
|
461
|
+
local parentDelayedKey = parentQueueKey .. ":delayed"
|
462
|
+
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) ~= false then
|
463
|
+
rcall("ZREM", parentWaitingChildrenKey, parentId)
|
461
464
|
local parentQueuePrefix = parentQueueKey .. ":"
|
462
465
|
local parentFailedKey = parentQueueKey .. ":failed"
|
463
466
|
rcall("ZADD", parentFailedKey, timestamp, parentId)
|
@@ -493,6 +496,43 @@ local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey,
|
|
493
496
|
local parentRawOpts = jobAttributes[3]
|
494
497
|
local parentOpts = cjson.decode(parentRawOpts)
|
495
498
|
removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
|
499
|
+
elseif rcall("ZSCORE", parentDelayedKey, parentId) ~= false then
|
500
|
+
rcall("ZREM", parentDelayedKey, parentId)
|
501
|
+
local parentQueuePrefix = parentQueueKey .. ":"
|
502
|
+
local parentFailedKey = parentQueueKey .. ":failed"
|
503
|
+
rcall("ZADD", parentFailedKey, timestamp, parentId)
|
504
|
+
local failedReason = "child " .. jobIdKey .. " failed"
|
505
|
+
rcall("HMSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
|
506
|
+
rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
|
507
|
+
failedReason, "prev", "delayed")
|
508
|
+
local jobAttributes = rcall("HMGET", parentKey, "parent", "deid", "opts")
|
509
|
+
removeDeduplicationKeyIfNeeded(parentQueueKey .. ":", jobAttributes[2])
|
510
|
+
if jobAttributes[1] then
|
511
|
+
local parentData = cjson.decode(jobAttributes[1])
|
512
|
+
if parentData['fpof'] then
|
513
|
+
moveParentFromWaitingChildrenToFailed(
|
514
|
+
parentData['queueKey'],
|
515
|
+
parentData['queueKey'] .. ':' .. parentData['id'],
|
516
|
+
parentData['id'],
|
517
|
+
parentKey,
|
518
|
+
timestamp
|
519
|
+
)
|
520
|
+
elseif parentData['idof'] or parentData['rdof'] then
|
521
|
+
local grandParentKey = parentData['queueKey'] .. ':' .. parentData['id']
|
522
|
+
local grandParentDependenciesSet = grandParentKey .. ":dependencies"
|
523
|
+
if rcall("SREM", grandParentDependenciesSet, parentKey) == 1 then
|
524
|
+
moveParentToWaitIfNeeded(parentData['queueKey'], grandParentDependenciesSet,
|
525
|
+
grandParentKey, parentData['id'], timestamp)
|
526
|
+
if parentData['idof'] then
|
527
|
+
local grandParentFailedSet = grandParentKey .. ":failed"
|
528
|
+
rcall("HSET", grandParentFailedSet, parentKey, failedReason)
|
529
|
+
end
|
530
|
+
end
|
531
|
+
end
|
532
|
+
end
|
533
|
+
local parentRawOpts = jobAttributes[3]
|
534
|
+
local parentOpts = cjson.decode(parentRawOpts)
|
535
|
+
removeJobsOnFail(parentQueuePrefix, parentFailedKey, parentId, parentOpts, timestamp)
|
496
536
|
end
|
497
537
|
end
|
498
538
|
--[[
|
@@ -591,12 +631,12 @@ end
|
|
591
631
|
Function to get max events value or set by default 10000.
|
592
632
|
]]
|
593
633
|
local function getOrSetMaxEvents(metaKey)
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
634
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
635
|
+
if not maxEvents then
|
636
|
+
maxEvents = 10000
|
637
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
638
|
+
end
|
639
|
+
return maxEvents
|
600
640
|
end
|
601
641
|
local function trimEvents(metaKey, eventStreamKey)
|
602
642
|
local maxEvents = getOrSetMaxEvents(metaKey)
|
@@ -647,7 +687,7 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
|
|
647
687
|
local parentKey = jobAttributes[1] or ""
|
648
688
|
local parentId = ""
|
649
689
|
local parentQueueKey = ""
|
650
|
-
if jobAttributes[2]
|
690
|
+
if jobAttributes[2] then
|
651
691
|
local jsonDecodedParent = cjson.decode(jobAttributes[2])
|
652
692
|
parentId = jsonDecodedParent['id']
|
653
693
|
parentQueueKey = jsonDecodedParent['queueKey']
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"moveToFinished-14.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-14.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"moveToFinished-14.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-14.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAo0Bf,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
|
@@ -29,12 +29,12 @@ end
|
|
29
29
|
Function to get max events value or set by default 10000.
|
30
30
|
]]
|
31
31
|
local function getOrSetMaxEvents(metaKey)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
32
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
33
|
+
if not maxEvents then
|
34
|
+
maxEvents = 10000
|
35
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
36
|
+
end
|
37
|
+
return maxEvents
|
38
38
|
end
|
39
39
|
--[[
|
40
40
|
Function to check if the job belongs to a job scheduler and
|
@@ -43,12 +43,12 @@ end
|
|
43
43
|
Function to get max events value or set by default 10000.
|
44
44
|
]]
|
45
45
|
local function getOrSetMaxEvents(metaKey)
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
46
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
47
|
+
if not maxEvents then
|
48
|
+
maxEvents = 10000
|
49
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
50
|
+
end
|
51
|
+
return maxEvents
|
52
52
|
end
|
53
53
|
--[[
|
54
54
|
Function to check for the meta.paused key to decide if we are paused or not
|
@@ -68,12 +68,12 @@ end
|
|
68
68
|
Function to get max events value or set by default 10000.
|
69
69
|
]]
|
70
70
|
local function getOrSetMaxEvents(metaKey)
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
71
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
72
|
+
if not maxEvents then
|
73
|
+
maxEvents = 10000
|
74
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
75
|
+
end
|
76
|
+
return maxEvents
|
77
77
|
end
|
78
78
|
--[[
|
79
79
|
Function to check for the meta.paused key to decide if we are paused or not
|
@@ -85,41 +85,8 @@ local function getDelayedScore(delayedKey, timestamp, delay)
|
|
85
85
|
end
|
86
86
|
return minScore, delayedTimestamp
|
87
87
|
end
|
88
|
-
|
89
|
-
|
90
|
-
]]
|
91
|
-
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
|
92
|
-
parentKey, parentData, repeatJobKey)
|
93
|
-
local jsonOpts = cjson.encode(opts)
|
94
|
-
local delay = opts['delay'] or 0
|
95
|
-
local priority = opts['priority'] or 0
|
96
|
-
local debounceId = opts['de'] and opts['de']['id']
|
97
|
-
local optionalValues = {}
|
98
|
-
if parentKey ~= nil then
|
99
|
-
table.insert(optionalValues, "parentKey")
|
100
|
-
table.insert(optionalValues, parentKey)
|
101
|
-
table.insert(optionalValues, "parent")
|
102
|
-
table.insert(optionalValues, parentData)
|
103
|
-
end
|
104
|
-
if repeatJobKey ~= nil then
|
105
|
-
table.insert(optionalValues, "rjk")
|
106
|
-
table.insert(optionalValues, repeatJobKey)
|
107
|
-
end
|
108
|
-
if debounceId then
|
109
|
-
table.insert(optionalValues, "deid")
|
110
|
-
table.insert(optionalValues, debounceId)
|
111
|
-
end
|
112
|
-
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
|
113
|
-
"timestamp", timestamp, "delay", delay, "priority", priority,
|
114
|
-
unpack(optionalValues))
|
115
|
-
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
|
116
|
-
return delay, priority
|
117
|
-
end
|
118
|
-
local function addDelayedJob(jobIdKey, jobId, delayedKey, eventsKey, name, data, opts, timestamp, repeatJobKey,
|
119
|
-
maxEvents, markerKey, parentKey, parentData)
|
120
|
-
-- Store the job.
|
121
|
-
local delay, priority = storeJob(eventsKey, jobIdKey, jobId, name, data,
|
122
|
-
opts, timestamp, parentKey, parentData, repeatJobKey)
|
88
|
+
local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
|
89
|
+
maxEvents, markerKey, delay)
|
123
90
|
local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
|
124
91
|
rcall("ZADD", delayedKey, score, jobId)
|
125
92
|
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
|
@@ -131,12 +98,12 @@ end
|
|
131
98
|
Function to get max events value or set by default 10000.
|
132
99
|
]]
|
133
100
|
local function getOrSetMaxEvents(metaKey)
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
101
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
102
|
+
if not maxEvents then
|
103
|
+
maxEvents = 10000
|
104
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
105
|
+
end
|
106
|
+
return maxEvents
|
140
107
|
end
|
141
108
|
local schedulerKey = repeatKey .. ":" .. jobSchedulerId
|
142
109
|
local nextDelayedJobId = "repeat:" .. jobSchedulerId .. ":" .. nextMillis
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"updateJobScheduler-7.js","sourceRoot":"","sources":["../../../src/scripts/updateJobScheduler-7.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"updateJobScheduler-7.js","sourceRoot":"","sources":["../../../src/scripts/updateJobScheduler-7.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsIf,CAAC;AACW,QAAA,kBAAkB,GAAG;IAChC,IAAI,EAAE,oBAAoB;IAC1B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -21,12 +21,12 @@ local rcall = redis.call
|
|
21
21
|
Function to get max events value or set by default 10000.
|
22
22
|
]]
|
23
23
|
local function getOrSetMaxEvents(metaKey)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
24
|
+
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
|
25
|
+
if not maxEvents then
|
26
|
+
maxEvents = 10000
|
27
|
+
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
|
28
|
+
end
|
29
|
+
return maxEvents
|
30
30
|
end
|
31
31
|
if rcall("EXISTS", KEYS[1]) == 1 then -- // Make sure job exists
|
32
32
|
local maxEvents = getOrSetMaxEvents(KEYS[3])
|