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
@@ -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")
|
@@ -6,8 +6,9 @@ export declare enum ParentCommand {
|
|
6
6
|
InitCompleted = 4,
|
7
7
|
Log = 5,
|
8
8
|
MoveToDelayed = 6,
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
MoveToWait = 7,
|
10
|
+
Progress = 8,
|
11
|
+
Update = 9,
|
12
|
+
GetChildrenValues = 10,
|
13
|
+
GetIgnoredChildrenFailures = 11
|
13
14
|
}
|
@@ -7,9 +7,10 @@ export var ParentCommand;
|
|
7
7
|
ParentCommand[ParentCommand["InitCompleted"] = 4] = "InitCompleted";
|
8
8
|
ParentCommand[ParentCommand["Log"] = 5] = "Log";
|
9
9
|
ParentCommand[ParentCommand["MoveToDelayed"] = 6] = "MoveToDelayed";
|
10
|
-
ParentCommand[ParentCommand["
|
11
|
-
ParentCommand[ParentCommand["
|
12
|
-
ParentCommand[ParentCommand["
|
13
|
-
ParentCommand[ParentCommand["
|
10
|
+
ParentCommand[ParentCommand["MoveToWait"] = 7] = "MoveToWait";
|
11
|
+
ParentCommand[ParentCommand["Progress"] = 8] = "Progress";
|
12
|
+
ParentCommand[ParentCommand["Update"] = 9] = "Update";
|
13
|
+
ParentCommand[ParentCommand["GetChildrenValues"] = 10] = "GetChildrenValues";
|
14
|
+
ParentCommand[ParentCommand["GetIgnoredChildrenFailures"] = 11] = "GetIgnoredChildrenFailures";
|
14
15
|
})(ParentCommand || (ParentCommand = {}));
|
15
16
|
//# sourceMappingURL=parent-command.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"parent-command.js","sourceRoot":"","sources":["../../../src/enums/parent-command.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
1
|
+
{"version":3,"file":"parent-command.js","sourceRoot":"","sources":["../../../src/enums/parent-command.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,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,KAAb,aAAa,QAaxB"}
|
@@ -3,7 +3,6 @@ export * from './backoff-options';
|
|
3
3
|
export * from './base-job-options';
|
4
4
|
export * from './child-message';
|
5
5
|
export * from './connection';
|
6
|
-
export * from './debounce-options';
|
7
6
|
export * from './flow-job';
|
8
7
|
export * from './ioredis-events';
|
9
8
|
export * from './job-json';
|
@@ -3,7 +3,6 @@ export * from './backoff-options';
|
|
3
3
|
export * from './base-job-options';
|
4
4
|
export * from './child-message';
|
5
5
|
export * from './connection';
|
6
|
-
export * from './debounce-options';
|
7
6
|
export * from './flow-job';
|
8
7
|
export * from './ioredis-events';
|
9
8
|
export * from './job-json';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
@@ -6,6 +6,7 @@ export interface SandboxedJob<T = any, R = any> extends Omit<JobJsonSandbox, 'da
|
|
6
6
|
data: T;
|
7
7
|
opts: JobsOptions;
|
8
8
|
moveToDelayed: (timestamp: number, token?: string) => Promise<void>;
|
9
|
+
moveToWait: (token?: string) => Promise<void>;
|
9
10
|
log: (row: any) => void;
|
10
11
|
updateData: (data: any) => Promise<void>;
|
11
12
|
updateProgress: (value: JobProgress) => Promise<void>;
|
@@ -111,26 +111,75 @@ local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
|
|
111
111
|
end
|
112
112
|
--[[
|
113
113
|
Function to debounce a job.
|
114
|
-
]]
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
114
|
+
]]
|
115
|
+
-- Includes
|
116
|
+
--[[
|
117
|
+
Function to remove job keys.
|
118
|
+
]]
|
119
|
+
local function removeJobKeys(jobKey)
|
120
|
+
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
|
121
|
+
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
|
122
|
+
end
|
123
|
+
local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
|
124
|
+
prefix)
|
125
|
+
local deduplicationId = deduplicationOpts and deduplicationOpts['id']
|
126
|
+
if deduplicationId then
|
127
|
+
local ttl = deduplicationOpts['ttl']
|
128
|
+
if deduplicationOpts['replace'] and ttl and ttl > 0 then
|
129
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
130
|
+
if currentDebounceJobId then
|
131
|
+
if rcall("ZREM", delayedKey, currentDebounceJobId) > 0 then
|
132
|
+
removeJobKeys(prefix .. currentDebounceJobId)
|
133
|
+
rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDebounceJobId,
|
134
|
+
"prev", "delayed")
|
135
|
+
if deduplicationOpts['extend'] then
|
136
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
137
|
+
else
|
138
|
+
rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
|
139
|
+
end
|
140
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
141
|
+
jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDebounceJobId)
|
142
|
+
return
|
143
|
+
else
|
144
|
+
return currentDebounceJobId
|
145
|
+
end
|
146
|
+
else
|
147
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
148
|
+
return
|
149
|
+
end
|
150
|
+
else
|
151
|
+
local ttl = deduplicationOpts['ttl']
|
152
|
+
local deduplicationKeyExists
|
153
|
+
if ttl then
|
154
|
+
if deduplicationOpts['extend'] then
|
155
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
156
|
+
if currentDebounceJobId then
|
157
|
+
rcall('SET', deduplicationKey, currentDebounceJobId, 'PX', ttl)
|
158
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
|
159
|
+
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
|
160
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
161
|
+
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
|
162
|
+
return currentDebounceJobId
|
163
|
+
else
|
164
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
165
|
+
return
|
166
|
+
end
|
167
|
+
else
|
168
|
+
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
|
169
|
+
end
|
170
|
+
else
|
171
|
+
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
|
172
|
+
end
|
173
|
+
if deduplicationKeyExists then
|
174
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
175
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
|
176
|
+
currentDebounceJobId, "debounceId", deduplicationId)
|
177
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
178
|
+
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
|
179
|
+
return currentDebounceJobId
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
134
183
|
end
|
135
184
|
--[[
|
136
185
|
Function to get max events value or set by default 10000.
|
@@ -378,8 +427,8 @@ else
|
|
378
427
|
maxEvents, timestamp)
|
379
428
|
end
|
380
429
|
end
|
381
|
-
local deduplicationJobId = deduplicateJob(opts['de'], jobId, deduplicationKey,
|
382
|
-
eventsKey, maxEvents)
|
430
|
+
local deduplicationJobId = deduplicateJob(opts['de'], jobId, delayedKey, deduplicationKey,
|
431
|
+
eventsKey, maxEvents, args[1])
|
383
432
|
if deduplicationJobId then
|
384
433
|
return deduplicationJobId
|
385
434
|
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;AACF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,eAAe;IACrB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -6,8 +6,9 @@ const content = `--[[
|
|
6
6
|
Input:
|
7
7
|
KEYS[1] 'meta'
|
8
8
|
KEYS[2] 'id'
|
9
|
-
KEYS[3] '
|
10
|
-
KEYS[4]
|
9
|
+
KEYS[3] 'delayed'
|
10
|
+
KEYS[4] 'completed'
|
11
|
+
KEYS[5] events stream key
|
11
12
|
ARGV[1] msgpacked arguments array
|
12
13
|
[1] key prefix,
|
13
14
|
[2] custom id (will not generate one automatically)
|
@@ -27,8 +28,8 @@ const content = `--[[
|
|
27
28
|
]]
|
28
29
|
local metaKey = KEYS[1]
|
29
30
|
local idKey = KEYS[2]
|
30
|
-
local completedKey = KEYS[
|
31
|
-
local eventsKey = KEYS[
|
31
|
+
local completedKey = KEYS[4]
|
32
|
+
local eventsKey = KEYS[5]
|
32
33
|
local jobId
|
33
34
|
local jobIdKey
|
34
35
|
local rcall = redis.call
|
@@ -43,26 +44,75 @@ local parentData
|
|
43
44
|
-- Includes
|
44
45
|
--[[
|
45
46
|
Function to debounce a job.
|
46
|
-
]]
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
47
|
+
]]
|
48
|
+
-- Includes
|
49
|
+
--[[
|
50
|
+
Function to remove job keys.
|
51
|
+
]]
|
52
|
+
local function removeJobKeys(jobKey)
|
53
|
+
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
|
54
|
+
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
|
55
|
+
end
|
56
|
+
local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
|
57
|
+
prefix)
|
58
|
+
local deduplicationId = deduplicationOpts and deduplicationOpts['id']
|
59
|
+
if deduplicationId then
|
60
|
+
local ttl = deduplicationOpts['ttl']
|
61
|
+
if deduplicationOpts['replace'] and ttl and ttl > 0 then
|
62
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
63
|
+
if currentDebounceJobId then
|
64
|
+
if rcall("ZREM", delayedKey, currentDebounceJobId) > 0 then
|
65
|
+
removeJobKeys(prefix .. currentDebounceJobId)
|
66
|
+
rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDebounceJobId,
|
67
|
+
"prev", "delayed")
|
68
|
+
if deduplicationOpts['extend'] then
|
69
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
70
|
+
else
|
71
|
+
rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
|
72
|
+
end
|
73
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
74
|
+
jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDebounceJobId)
|
75
|
+
return
|
76
|
+
else
|
77
|
+
return currentDebounceJobId
|
78
|
+
end
|
79
|
+
else
|
80
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
81
|
+
return
|
82
|
+
end
|
83
|
+
else
|
84
|
+
local ttl = deduplicationOpts['ttl']
|
85
|
+
local deduplicationKeyExists
|
86
|
+
if ttl then
|
87
|
+
if deduplicationOpts['extend'] then
|
88
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
89
|
+
if currentDebounceJobId then
|
90
|
+
rcall('SET', deduplicationKey, currentDebounceJobId, 'PX', ttl)
|
91
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
|
92
|
+
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
|
93
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
94
|
+
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
|
95
|
+
return currentDebounceJobId
|
96
|
+
else
|
97
|
+
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
|
98
|
+
return
|
99
|
+
end
|
100
|
+
else
|
101
|
+
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
|
102
|
+
end
|
103
|
+
else
|
104
|
+
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
|
105
|
+
end
|
106
|
+
if deduplicationKeyExists then
|
107
|
+
local currentDebounceJobId = rcall('GET', deduplicationKey)
|
108
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
|
109
|
+
currentDebounceJobId, "debounceId", deduplicationId)
|
110
|
+
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
|
111
|
+
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
|
112
|
+
return currentDebounceJobId
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
66
116
|
end
|
67
117
|
--[[
|
68
118
|
Function to get max events value or set by default 10000.
|
@@ -333,8 +383,8 @@ else
|
|
333
383
|
maxEvents, timestamp)
|
334
384
|
end
|
335
385
|
end
|
336
|
-
local deduplicationJobId = deduplicateJob(opts['de'], jobId,
|
337
|
-
deduplicationKey, eventsKey, maxEvents)
|
386
|
+
local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[3],
|
387
|
+
deduplicationKey, eventsKey, maxEvents, args[1])
|
338
388
|
if deduplicationJobId then
|
339
389
|
return deduplicationJobId
|
340
390
|
end
|
@@ -354,6 +404,6 @@ return jobId .. "" -- convert to string
|
|
354
404
|
export const addParentJob = {
|
355
405
|
name: 'addParentJob',
|
356
406
|
content,
|
357
|
-
keys:
|
407
|
+
keys: 5,
|
358
408
|
};
|
359
|
-
//# sourceMappingURL=addParentJob-
|
409
|
+
//# 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;AACF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,cAAc;IACpB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|