bullmq 5.54.3 → 5.56.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/child-processor.js +9 -0
- package/dist/cjs/classes/child-processor.js.map +1 -1
- package/dist/cjs/classes/errors/index.js +2 -1
- package/dist/cjs/classes/errors/index.js.map +1 -1
- package/dist/cjs/classes/errors/waiting-error.js +19 -0
- package/dist/cjs/classes/errors/waiting-error.js.map +1 -0
- package/dist/cjs/classes/job.js.map +1 -1
- package/dist/cjs/classes/sandbox.js +4 -1
- package/dist/cjs/classes/sandbox.js.map +1 -1
- package/dist/cjs/classes/scripts.js +4 -1
- package/dist/cjs/classes/scripts.js.map +1 -1
- package/dist/cjs/classes/worker.js +2 -0
- package/dist/cjs/classes/worker.js.map +1 -1
- package/dist/cjs/commands/addDelayedJob-6.lua +2 -2
- package/dist/cjs/commands/{addParentJob-4.lua → addParentJob-5.lua} +7 -6
- package/dist/cjs/commands/{addPrioritizedJob-8.lua → addPrioritizedJob-9.lua} +11 -10
- package/dist/{esm/commands/addStandardJob-8.lua → cjs/commands/addStandardJob-9.lua} +9 -8
- package/dist/cjs/commands/includes/collectMetrics.lua +1 -1
- package/dist/cjs/commands/includes/deduplicateJob.lua +66 -20
- package/dist/cjs/commands/includes/storeJob.lua +1 -1
- package/dist/cjs/commands/moveJobFromActiveToWait-9.lua +1 -1
- package/dist/cjs/enums/parent-command.js +5 -4
- package/dist/cjs/enums/parent-command.js.map +1 -1
- package/dist/cjs/interfaces/index.js +0 -1
- package/dist/cjs/interfaces/index.js.map +1 -1
- package/dist/cjs/scripts/addDelayedJob-6.js +71 -22
- package/dist/cjs/scripts/addDelayedJob-6.js.map +1 -1
- package/dist/cjs/scripts/{addParentJob-4.js → addParentJob-5.js} +78 -28
- package/dist/cjs/scripts/addParentJob-5.js.map +1 -0
- package/dist/cjs/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-9.js} +82 -32
- package/dist/cjs/scripts/{addPrioritizedJob-8.js.map → addPrioritizedJob-9.js.map} +1 -1
- package/dist/cjs/scripts/{addStandardJob-8.js → addStandardJob-9.js} +80 -30
- package/dist/cjs/scripts/{addStandardJob-8.js.map → addStandardJob-9.js.map} +1 -1
- package/dist/cjs/scripts/index.js +3 -3
- package/dist/cjs/scripts/moveJobFromActiveToWait-9.js +1 -1
- package/dist/cjs/scripts/moveToFinished-14.js +1 -1
- package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/cjs/{interfaces/debounce-options.js → types/deduplication-options.js} +1 -1
- package/dist/cjs/types/deduplication-options.js.map +1 -0
- package/dist/cjs/types/index.js +1 -0
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/classes/child-processor.js +9 -0
- package/dist/esm/classes/child-processor.js.map +1 -1
- package/dist/esm/classes/errors/index.d.ts +2 -1
- package/dist/esm/classes/errors/index.js +2 -1
- package/dist/esm/classes/errors/index.js.map +1 -1
- package/dist/esm/classes/errors/waiting-error.d.ts +10 -0
- package/dist/esm/classes/errors/waiting-error.js +15 -0
- package/dist/esm/classes/errors/waiting-error.js.map +1 -0
- package/dist/esm/classes/job.d.ts +1 -1
- package/dist/esm/classes/job.js.map +1 -1
- package/dist/esm/classes/sandbox.js +4 -1
- package/dist/esm/classes/sandbox.js.map +1 -1
- package/dist/esm/classes/scripts.d.ts +1 -1
- package/dist/esm/classes/scripts.js +4 -1
- package/dist/esm/classes/scripts.js.map +1 -1
- package/dist/esm/classes/worker.js +3 -1
- package/dist/esm/classes/worker.js.map +1 -1
- package/dist/esm/commands/addDelayedJob-6.lua +2 -2
- package/dist/esm/commands/{addParentJob-4.lua → addParentJob-5.lua} +7 -6
- package/dist/esm/commands/{addPrioritizedJob-8.lua → addPrioritizedJob-9.lua} +11 -10
- package/dist/{cjs/commands/addStandardJob-8.lua → esm/commands/addStandardJob-9.lua} +9 -8
- package/dist/esm/commands/includes/collectMetrics.lua +1 -1
- package/dist/esm/commands/includes/deduplicateJob.lua +66 -20
- package/dist/esm/commands/includes/storeJob.lua +1 -1
- package/dist/esm/commands/moveJobFromActiveToWait-9.lua +1 -1
- package/dist/esm/enums/parent-command.d.ts +5 -4
- package/dist/esm/enums/parent-command.js +5 -4
- package/dist/esm/enums/parent-command.js.map +1 -1
- package/dist/esm/interfaces/index.d.ts +0 -1
- package/dist/esm/interfaces/index.js +0 -1
- package/dist/esm/interfaces/index.js.map +1 -1
- package/dist/esm/interfaces/sandboxed-job.d.ts +1 -0
- package/dist/esm/scripts/addDelayedJob-6.js +71 -22
- package/dist/esm/scripts/addDelayedJob-6.js.map +1 -1
- package/dist/esm/scripts/{addParentJob-4.js → addParentJob-5.js} +78 -28
- package/dist/esm/scripts/addParentJob-5.js.map +1 -0
- package/dist/esm/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-9.js} +82 -32
- package/dist/esm/scripts/{addPrioritizedJob-8.js.map → addPrioritizedJob-9.js.map} +1 -1
- package/dist/esm/scripts/{addStandardJob-8.js → addStandardJob-9.js} +80 -30
- package/dist/esm/scripts/{addStandardJob-8.js.map → addStandardJob-9.js.map} +1 -1
- package/dist/esm/scripts/index.d.ts +3 -3
- package/dist/esm/scripts/index.js +3 -3
- package/dist/esm/scripts/moveJobFromActiveToWait-9.js +1 -1
- package/dist/esm/scripts/moveToFinished-14.js +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/types/deduplication-options.d.ts +22 -0
- package/dist/esm/types/deduplication-options.js +2 -0
- package/dist/esm/types/deduplication-options.js.map +1 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/job-options.d.ts +6 -6
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/interfaces/debounce-options.js.map +0 -1
- package/dist/cjs/scripts/addParentJob-4.js.map +0 -1
- package/dist/esm/interfaces/debounce-options.d.ts +0 -13
- package/dist/esm/interfaces/debounce-options.js +0 -2
- package/dist/esm/interfaces/debounce-options.js.map +0 -1
- package/dist/esm/scripts/addParentJob-4.js.map +0 -1
- /package/dist/esm/scripts/{addParentJob-4.d.ts → addParentJob-5.d.ts} +0 -0
- /package/dist/esm/scripts/{addPrioritizedJob-8.d.ts → addPrioritizedJob-9.d.ts} +0 -0
- /package/dist/esm/scripts/{addStandardJob-8.d.ts → addStandardJob-9.d.ts} +0 -0
@@ -89,8 +89,8 @@ else
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
|
-
local deduplicationJobId = deduplicateJob(opts['de'], jobId, deduplicationKey,
|
93
|
-
eventsKey, maxEvents)
|
92
|
+
local deduplicationJobId = deduplicateJob(opts['de'], jobId, delayedKey, deduplicationKey,
|
93
|
+
eventsKey, maxEvents, args[1])
|
94
94
|
if deduplicationJobId then
|
95
95
|
return deduplicationJobId
|
96
96
|
end
|
@@ -7,8 +7,9 @@
|
|
7
7
|
Input:
|
8
8
|
KEYS[1] 'meta'
|
9
9
|
KEYS[2] 'id'
|
10
|
-
KEYS[3] '
|
11
|
-
KEYS[4]
|
10
|
+
KEYS[3] 'delayed'
|
11
|
+
KEYS[4] 'completed'
|
12
|
+
KEYS[5] events stream key
|
12
13
|
|
13
14
|
ARGV[1] msgpacked arguments array
|
14
15
|
[1] key prefix,
|
@@ -32,8 +33,8 @@
|
|
32
33
|
local metaKey = KEYS[1]
|
33
34
|
local idKey = KEYS[2]
|
34
35
|
|
35
|
-
local completedKey = KEYS[
|
36
|
-
local eventsKey = KEYS[
|
36
|
+
local completedKey = KEYS[4]
|
37
|
+
local eventsKey = KEYS[5]
|
37
38
|
|
38
39
|
local jobId
|
39
40
|
local jobIdKey
|
@@ -81,8 +82,8 @@ else
|
|
81
82
|
end
|
82
83
|
end
|
83
84
|
|
84
|
-
local deduplicationJobId = deduplicateJob(opts['de'], jobId,
|
85
|
-
deduplicationKey, eventsKey, maxEvents)
|
85
|
+
local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[3],
|
86
|
+
deduplicationKey, eventsKey, maxEvents, args[1])
|
86
87
|
if deduplicationJobId then
|
87
88
|
return deduplicationJobId
|
88
89
|
end
|
@@ -9,10 +9,11 @@
|
|
9
9
|
KEYS[2] 'meta'
|
10
10
|
KEYS[3] 'id'
|
11
11
|
KEYS[4] 'prioritized'
|
12
|
-
KEYS[5] '
|
13
|
-
KEYS[6] '
|
14
|
-
KEYS[7]
|
15
|
-
KEYS[8]
|
12
|
+
KEYS[5] 'delayed'
|
13
|
+
KEYS[6] 'completed'
|
14
|
+
KEYS[7] 'active'
|
15
|
+
KEYS[8] events stream key
|
16
|
+
KEYS[9] 'pc' priority counter
|
16
17
|
|
17
18
|
ARGV[1] msgpacked arguments array
|
18
19
|
[1] key prefix,
|
@@ -37,10 +38,10 @@ local metaKey = KEYS[2]
|
|
37
38
|
local idKey = KEYS[3]
|
38
39
|
local priorityKey = KEYS[4]
|
39
40
|
|
40
|
-
local completedKey = KEYS[
|
41
|
-
local activeKey = KEYS[
|
42
|
-
local eventsKey = KEYS[
|
43
|
-
local priorityCounterKey = KEYS[
|
41
|
+
local completedKey = KEYS[6]
|
42
|
+
local activeKey = KEYS[7]
|
43
|
+
local eventsKey = KEYS[8]
|
44
|
+
local priorityCounterKey = KEYS[9]
|
44
45
|
|
45
46
|
local jobId
|
46
47
|
local jobIdKey
|
@@ -90,8 +91,8 @@ else
|
|
90
91
|
end
|
91
92
|
end
|
92
93
|
|
93
|
-
local deduplicationJobId = deduplicateJob(opts['de'], jobId,
|
94
|
-
deduplicationKey, eventsKey, maxEvents)
|
94
|
+
local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[5],
|
95
|
+
deduplicationKey, eventsKey, maxEvents, args[1])
|
95
96
|
if deduplicationJobId then
|
96
97
|
return deduplicationJobId
|
97
98
|
end
|
@@ -20,9 +20,10 @@
|
|
20
20
|
KEYS[3] 'meta'
|
21
21
|
KEYS[4] 'id'
|
22
22
|
KEYS[5] 'completed'
|
23
|
-
KEYS[6] '
|
24
|
-
KEYS[7]
|
25
|
-
KEYS[8]
|
23
|
+
KEYS[6] 'delayed'
|
24
|
+
KEYS[7] 'active'
|
25
|
+
KEYS[8] events stream key
|
26
|
+
KEYS[9] marker key
|
26
27
|
|
27
28
|
ARGV[1] msgpacked arguments array
|
28
29
|
[1] key prefix,
|
@@ -43,7 +44,7 @@
|
|
43
44
|
jobId - OK
|
44
45
|
-5 - Missing parent key
|
45
46
|
]]
|
46
|
-
local eventsKey = KEYS[
|
47
|
+
local eventsKey = KEYS[8]
|
47
48
|
|
48
49
|
local jobId
|
49
50
|
local jobIdKey
|
@@ -94,8 +95,8 @@ else
|
|
94
95
|
end
|
95
96
|
end
|
96
97
|
|
97
|
-
local deduplicationJobId = deduplicateJob(opts['de'], jobId,
|
98
|
-
deduplicationKey, eventsKey, maxEvents)
|
98
|
+
local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[6],
|
99
|
+
deduplicationKey, eventsKey, maxEvents, args[1])
|
99
100
|
if deduplicationJobId then
|
100
101
|
return deduplicationJobId
|
101
102
|
end
|
@@ -104,11 +105,11 @@ end
|
|
104
105
|
storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2], opts, timestamp,
|
105
106
|
parentKey, parentData, repeatJobKey)
|
106
107
|
|
107
|
-
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[
|
108
|
+
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[7], KEYS[1], KEYS[2])
|
108
109
|
|
109
110
|
-- LIFO or FIFO
|
110
111
|
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
|
111
|
-
addJobInTargetList(target, KEYS[
|
112
|
+
addJobInTargetList(target, KEYS[9], pushCmd, isPausedOrMaxed, jobId)
|
112
113
|
|
113
114
|
-- Emit waiting event
|
114
115
|
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
|
@@ -1,23 +1,69 @@
|
|
1
1
|
--[[
|
2
2
|
Function to debounce a job.
|
3
|
-
]]
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
3
|
+
]]
|
4
|
+
-- Includes
|
5
|
+
--- @include "removeJobKeys"
|
6
|
+
local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
|
7
|
+
prefix)
|
8
|
+
local deduplicationId = deduplicationOpts and deduplicationOpts['id']
|
9
|
+
if deduplicationId then
|
10
|
+
local ttl = deduplicationOpts['ttl']
|
11
|
+
if deduplicationOpts['replace'] and ttl and ttl > 0 then
|
12
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
13
|
+
if currentDebounceJobId then
|
14
|
+
if rcall("ZREM", delayedKey, currentDebounceJobId) > 0 then
|
15
|
+
removeJobKeys(prefix .. currentDebounceJobId)
|
16
|
+
rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDebounceJobId,
|
17
|
+
"prev", "delayed")
|
18
|
+
|
19
|
+
if deduplicationOpts['extend'] then
|
20
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
21
|
+
else
|
22
|
+
rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
|
23
|
+
end
|
24
|
+
|
25
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
26
|
+
jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDebounceJobId)
|
27
|
+
return
|
28
|
+
else
|
29
|
+
return currentDebounceJobId
|
30
|
+
end
|
31
|
+
else
|
32
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
33
|
+
return
|
34
|
+
end
|
35
|
+
else
|
36
|
+
local ttl = deduplicationOpts['ttl']
|
37
|
+
local deduplicationKeyExists
|
38
|
+
if ttl then
|
39
|
+
if deduplicationOpts['extend'] then
|
40
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
41
|
+
if currentDebounceJobId then
|
42
|
+
rcall('SET', deduplicationKey, currentDebounceJobId, 'PX', ttl)
|
43
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
|
44
|
+
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
|
45
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
46
|
+
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
|
47
|
+
return currentDebounceJobId
|
48
|
+
else
|
49
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
50
|
+
return
|
51
|
+
end
|
52
|
+
else
|
53
|
+
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
|
54
|
+
end
|
55
|
+
else
|
56
|
+
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
|
57
|
+
end
|
58
|
+
|
59
|
+
if deduplicationKeyExists then
|
60
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
61
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
|
62
|
+
currentDebounceJobId, "debounceId", deduplicationId)
|
63
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
64
|
+
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
|
65
|
+
return currentDebounceJobId
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
23
69
|
end
|
@@ -7,7 +7,7 @@ local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
|
|
7
7
|
local delay = opts['delay'] or 0
|
8
8
|
local priority = opts['priority'] or 0
|
9
9
|
local debounceId = opts['de'] and opts['de']['id']
|
10
|
-
|
10
|
+
|
11
11
|
local optionalValues = {}
|
12
12
|
if parentKey ~= nil then
|
13
13
|
table.insert(optionalValues, "parentKey")
|
@@ -10,9 +10,10 @@ var ParentCommand;
|
|
10
10
|
ParentCommand[ParentCommand["InitCompleted"] = 4] = "InitCompleted";
|
11
11
|
ParentCommand[ParentCommand["Log"] = 5] = "Log";
|
12
12
|
ParentCommand[ParentCommand["MoveToDelayed"] = 6] = "MoveToDelayed";
|
13
|
-
ParentCommand[ParentCommand["
|
14
|
-
ParentCommand[ParentCommand["
|
15
|
-
ParentCommand[ParentCommand["
|
16
|
-
ParentCommand[ParentCommand["
|
13
|
+
ParentCommand[ParentCommand["MoveToWait"] = 7] = "MoveToWait";
|
14
|
+
ParentCommand[ParentCommand["Progress"] = 8] = "Progress";
|
15
|
+
ParentCommand[ParentCommand["Update"] = 9] = "Update";
|
16
|
+
ParentCommand[ParentCommand["GetChildrenValues"] = 10] = "GetChildrenValues";
|
17
|
+
ParentCommand[ParentCommand["GetIgnoredChildrenFailures"] = 11] = "GetIgnoredChildrenFailures";
|
17
18
|
})(ParentCommand = exports.ParentCommand || (exports.ParentCommand = {}));
|
18
19
|
//# sourceMappingURL=parent-command.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"parent-command.js","sourceRoot":"","sources":["../../../src/enums/parent-command.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
1
|
+
{"version":3,"file":"parent-command.js","sourceRoot":"","sources":["../../../src/enums/parent-command.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAaX;AAbD,WAAY,aAAa;IACvB,2DAAS,CAAA;IACT,mDAAK,CAAA;IACL,qDAAM,CAAA;IACN,6DAAU,CAAA;IACV,mEAAa,CAAA;IACb,+CAAG,CAAA;IACH,mEAAa,CAAA;IACb,6DAAU,CAAA;IACV,yDAAQ,CAAA;IACR,qDAAM,CAAA;IACN,4EAAiB,CAAA;IACjB,8FAA0B,CAAA;AAC5B,CAAC,EAbW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAaxB"}
|
@@ -6,7 +6,6 @@ tslib_1.__exportStar(require("./backoff-options"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./base-job-options"), exports);
|
7
7
|
tslib_1.__exportStar(require("./child-message"), exports);
|
8
8
|
tslib_1.__exportStar(require("./connection"), exports);
|
9
|
-
tslib_1.__exportStar(require("./debounce-options"), exports);
|
10
9
|
tslib_1.__exportStar(require("./flow-job"), exports);
|
11
10
|
tslib_1.__exportStar(require("./ioredis-events"), exports);
|
12
11
|
tslib_1.__exportStar(require("./job-json"), exports);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,4DAAkC;AAClC,6DAAmC;AACnC,0DAAgC;AAChC,uDAA6B;AAC7B,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,4DAAkC;AAClC,6DAAmC;AACnC,0DAAgC;AAChC,uDAA6B;AAC7B,qDAA2B;AAC3B,2DAAiC;AACjC,qDAA2B;AAC3B,+DAAqC;AACrC,sDAA4B;AAC5B,4DAAkC;AAClC,oDAA0B;AAC1B,wDAA8B;AAC9B,2DAAiC;AACjC,mDAAyB;AACzB,2DAAiC;AACjC,0DAAgC;AAChC,iEAAuC;AACvC,0DAAgC;AAChC,0DAAgC;AAChC,2DAAiC;AACjC,+DAAqC;AACrC,2DAAiC;AACjC,oEAA0C;AAC1C,0DAAgC;AAChC,8DAAoC;AACpC,2DAAiC;AACjC,sDAA4B;AAC5B,qDAA2B"}
|
@@ -114,26 +114,75 @@ local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
|
|
114
114
|
end
|
115
115
|
--[[
|
116
116
|
Function to debounce a job.
|
117
|
-
]]
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
117
|
+
]]
|
118
|
+
-- Includes
|
119
|
+
--[[
|
120
|
+
Function to remove job keys.
|
121
|
+
]]
|
122
|
+
local function removeJobKeys(jobKey)
|
123
|
+
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
|
124
|
+
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
|
125
|
+
end
|
126
|
+
local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
|
127
|
+
prefix)
|
128
|
+
local deduplicationId = deduplicationOpts and deduplicationOpts['id']
|
129
|
+
if deduplicationId then
|
130
|
+
local ttl = deduplicationOpts['ttl']
|
131
|
+
if deduplicationOpts['replace'] and ttl and ttl > 0 then
|
132
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
133
|
+
if currentDebounceJobId then
|
134
|
+
if rcall("ZREM", delayedKey, currentDebounceJobId) > 0 then
|
135
|
+
removeJobKeys(prefix .. currentDebounceJobId)
|
136
|
+
rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDebounceJobId,
|
137
|
+
"prev", "delayed")
|
138
|
+
if deduplicationOpts['extend'] then
|
139
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
140
|
+
else
|
141
|
+
rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
|
142
|
+
end
|
143
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
144
|
+
jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDebounceJobId)
|
145
|
+
return
|
146
|
+
else
|
147
|
+
return currentDebounceJobId
|
148
|
+
end
|
149
|
+
else
|
150
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
151
|
+
return
|
152
|
+
end
|
153
|
+
else
|
154
|
+
local ttl = deduplicationOpts['ttl']
|
155
|
+
local deduplicationKeyExists
|
156
|
+
if ttl then
|
157
|
+
if deduplicationOpts['extend'] then
|
158
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
159
|
+
if currentDebounceJobId then
|
160
|
+
rcall('SET', deduplicationKey, currentDebounceJobId, 'PX', ttl)
|
161
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
|
162
|
+
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
|
163
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
164
|
+
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
|
165
|
+
return currentDebounceJobId
|
166
|
+
else
|
167
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
168
|
+
return
|
169
|
+
end
|
170
|
+
else
|
171
|
+
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
|
172
|
+
end
|
173
|
+
else
|
174
|
+
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
|
175
|
+
end
|
176
|
+
if deduplicationKeyExists then
|
177
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
178
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
|
179
|
+
currentDebounceJobId, "debounceId", deduplicationId)
|
180
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
181
|
+
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
|
182
|
+
return currentDebounceJobId
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
137
186
|
end
|
138
187
|
--[[
|
139
188
|
Function to get max events value or set by default 10000.
|
@@ -381,8 +430,8 @@ else
|
|
381
430
|
maxEvents, timestamp)
|
382
431
|
end
|
383
432
|
end
|
384
|
-
local deduplicationJobId = deduplicateJob(opts['de'], jobId, deduplicationKey,
|
385
|
-
eventsKey, maxEvents)
|
433
|
+
local deduplicationJobId = deduplicateJob(opts['de'], jobId, delayedKey, deduplicationKey,
|
434
|
+
eventsKey, maxEvents, args[1])
|
386
435
|
if deduplicationJobId then
|
387
436
|
return deduplicationJobId
|
388
437
|
end
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"addDelayedJob-6.js","sourceRoot":"","sources":["../../../src/scripts/addDelayedJob-6.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"addDelayedJob-6.js","sourceRoot":"","sources":["../../../src/scripts/addDelayedJob-6.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0bf,CAAC;AACW,QAAA,aAAa,GAAG;IAC3B,IAAI,EAAE,eAAe;IACrB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -9,8 +9,9 @@ const content = `--[[
|
|
9
9
|
Input:
|
10
10
|
KEYS[1] 'meta'
|
11
11
|
KEYS[2] 'id'
|
12
|
-
KEYS[3] '
|
13
|
-
KEYS[4]
|
12
|
+
KEYS[3] 'delayed'
|
13
|
+
KEYS[4] 'completed'
|
14
|
+
KEYS[5] events stream key
|
14
15
|
ARGV[1] msgpacked arguments array
|
15
16
|
[1] key prefix,
|
16
17
|
[2] custom id (will not generate one automatically)
|
@@ -30,8 +31,8 @@ const content = `--[[
|
|
30
31
|
]]
|
31
32
|
local metaKey = KEYS[1]
|
32
33
|
local idKey = KEYS[2]
|
33
|
-
local completedKey = KEYS[
|
34
|
-
local eventsKey = KEYS[
|
34
|
+
local completedKey = KEYS[4]
|
35
|
+
local eventsKey = KEYS[5]
|
35
36
|
local jobId
|
36
37
|
local jobIdKey
|
37
38
|
local rcall = redis.call
|
@@ -46,26 +47,75 @@ local parentData
|
|
46
47
|
-- Includes
|
47
48
|
--[[
|
48
49
|
Function to debounce a job.
|
49
|
-
]]
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
50
|
+
]]
|
51
|
+
-- Includes
|
52
|
+
--[[
|
53
|
+
Function to remove job keys.
|
54
|
+
]]
|
55
|
+
local function removeJobKeys(jobKey)
|
56
|
+
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
|
57
|
+
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
|
58
|
+
end
|
59
|
+
local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
|
60
|
+
prefix)
|
61
|
+
local deduplicationId = deduplicationOpts and deduplicationOpts['id']
|
62
|
+
if deduplicationId then
|
63
|
+
local ttl = deduplicationOpts['ttl']
|
64
|
+
if deduplicationOpts['replace'] and ttl and ttl > 0 then
|
65
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
66
|
+
if currentDebounceJobId then
|
67
|
+
if rcall("ZREM", delayedKey, currentDebounceJobId) > 0 then
|
68
|
+
removeJobKeys(prefix .. currentDebounceJobId)
|
69
|
+
rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDebounceJobId,
|
70
|
+
"prev", "delayed")
|
71
|
+
if deduplicationOpts['extend'] then
|
72
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
73
|
+
else
|
74
|
+
rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
|
75
|
+
end
|
76
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
77
|
+
jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDebounceJobId)
|
78
|
+
return
|
79
|
+
else
|
80
|
+
return currentDebounceJobId
|
81
|
+
end
|
82
|
+
else
|
83
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
84
|
+
return
|
85
|
+
end
|
86
|
+
else
|
87
|
+
local ttl = deduplicationOpts['ttl']
|
88
|
+
local deduplicationKeyExists
|
89
|
+
if ttl then
|
90
|
+
if deduplicationOpts['extend'] then
|
91
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
92
|
+
if currentDebounceJobId then
|
93
|
+
rcall('SET', deduplicationKey, currentDebounceJobId, 'PX', ttl)
|
94
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
|
95
|
+
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
|
96
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
97
|
+
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
|
98
|
+
return currentDebounceJobId
|
99
|
+
else
|
100
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
101
|
+
return
|
102
|
+
end
|
103
|
+
else
|
104
|
+
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
|
105
|
+
end
|
106
|
+
else
|
107
|
+
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
|
108
|
+
end
|
109
|
+
if deduplicationKeyExists then
|
110
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
111
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
|
112
|
+
currentDebounceJobId, "debounceId", deduplicationId)
|
113
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
114
|
+
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
|
115
|
+
return currentDebounceJobId
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
69
119
|
end
|
70
120
|
--[[
|
71
121
|
Function to get max events value or set by default 10000.
|
@@ -336,8 +386,8 @@ else
|
|
336
386
|
maxEvents, timestamp)
|
337
387
|
end
|
338
388
|
end
|
339
|
-
local deduplicationJobId = deduplicateJob(opts['de'], jobId,
|
340
|
-
deduplicationKey, eventsKey, maxEvents)
|
389
|
+
local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[3],
|
390
|
+
deduplicationKey, eventsKey, maxEvents, args[1])
|
341
391
|
if deduplicationJobId then
|
342
392
|
return deduplicationJobId
|
343
393
|
end
|
@@ -357,6 +407,6 @@ return jobId .. "" -- convert to string
|
|
357
407
|
exports.addParentJob = {
|
358
408
|
name: 'addParentJob',
|
359
409
|
content,
|
360
|
-
keys:
|
410
|
+
keys: 5,
|
361
411
|
};
|
362
|
-
//# sourceMappingURL=addParentJob-
|
412
|
+
//# sourceMappingURL=addParentJob-5.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"addParentJob-5.js","sourceRoot":"","sources":["../../../src/scripts/addParentJob-5.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkZf,CAAC;AACW,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,cAAc;IACpB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|