bullmq 5.15.0 → 5.17.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.
Files changed (150) hide show
  1. package/dist/cjs/classes/child-pool.js +2 -2
  2. package/dist/cjs/classes/child-pool.js.map +1 -1
  3. package/dist/cjs/classes/job-scheduler.js +140 -0
  4. package/dist/cjs/classes/job-scheduler.js.map +1 -0
  5. package/dist/cjs/classes/job.js +6 -2
  6. package/dist/cjs/classes/job.js.map +1 -1
  7. package/dist/cjs/classes/queue-events.js.map +1 -1
  8. package/dist/cjs/classes/queue-getters.js +10 -0
  9. package/dist/cjs/classes/queue-getters.js.map +1 -1
  10. package/dist/cjs/classes/queue-keys.js +1 -1
  11. package/dist/cjs/classes/queue-keys.js.map +1 -1
  12. package/dist/cjs/classes/queue.js +74 -0
  13. package/dist/cjs/classes/queue.js.map +1 -1
  14. package/dist/cjs/classes/repeat.js +9 -10
  15. package/dist/cjs/classes/repeat.js.map +1 -1
  16. package/dist/cjs/classes/sandbox.js +57 -47
  17. package/dist/cjs/classes/sandbox.js.map +1 -1
  18. package/dist/cjs/classes/scripts.js +46 -40
  19. package/dist/cjs/classes/scripts.js.map +1 -1
  20. package/dist/cjs/classes/worker.js +23 -4
  21. package/dist/cjs/classes/worker.js.map +1 -1
  22. package/dist/cjs/commands/addDelayedJob-6.lua +7 -7
  23. package/dist/cjs/commands/addJobScheduler-2.lua +75 -0
  24. package/dist/cjs/commands/addParentJob-4.lua +7 -7
  25. package/dist/cjs/commands/addPrioritizedJob-8.lua +7 -7
  26. package/dist/cjs/commands/addStandardJob-8.lua +7 -7
  27. package/dist/cjs/commands/{cleanJobsInSet-2.lua → cleanJobsInSet-3.lua} +6 -5
  28. package/dist/cjs/commands/drain-5.lua +41 -0
  29. package/dist/cjs/commands/includes/cleanSet.lua +50 -29
  30. package/dist/cjs/commands/includes/deduplicateJob.lua +25 -0
  31. package/dist/cjs/commands/includes/removeZSetJobs.lua +13 -1
  32. package/dist/cjs/commands/moveStalledJobsToWait-9.lua +2 -4
  33. package/dist/cjs/commands/removeJob-2.lua +17 -9
  34. package/dist/cjs/commands/removeJobScheduler-3.lua +43 -0
  35. package/dist/cjs/enums/error-code.js +1 -0
  36. package/dist/cjs/enums/error-code.js.map +1 -1
  37. package/dist/cjs/scripts/addDelayedJob-6.js +18 -16
  38. package/dist/cjs/scripts/addDelayedJob-6.js.map +1 -1
  39. package/dist/cjs/scripts/addJobScheduler-2.js +223 -0
  40. package/dist/cjs/scripts/addJobScheduler-2.js.map +1 -0
  41. package/dist/cjs/scripts/addParentJob-4.js +18 -16
  42. package/dist/cjs/scripts/addParentJob-4.js.map +1 -1
  43. package/dist/cjs/scripts/addPrioritizedJob-8.js +18 -16
  44. package/dist/cjs/scripts/addPrioritizedJob-8.js.map +1 -1
  45. package/dist/cjs/scripts/addStandardJob-8.js +18 -16
  46. package/dist/cjs/scripts/addStandardJob-8.js.map +1 -1
  47. package/dist/cjs/scripts/{cleanJobsInSet-2.js → cleanJobsInSet-3.js} +57 -35
  48. package/dist/cjs/scripts/{cleanJobsInSet-2.js.map → cleanJobsInSet-3.js.map} +1 -1
  49. package/dist/cjs/scripts/{drain-4.js → drain-5.js} +28 -7
  50. package/dist/cjs/scripts/drain-5.js.map +1 -0
  51. package/dist/cjs/scripts/index.js +4 -2
  52. package/dist/cjs/scripts/index.js.map +1 -1
  53. package/dist/cjs/scripts/moveStalledJobsToWait-9.js +2 -3
  54. package/dist/cjs/scripts/moveStalledJobsToWait-9.js.map +1 -1
  55. package/dist/cjs/scripts/obliterate-2.js +11 -1
  56. package/dist/cjs/scripts/obliterate-2.js.map +1 -1
  57. package/dist/cjs/scripts/removeJob-2.js +16 -9
  58. package/dist/cjs/scripts/removeJob-2.js.map +1 -1
  59. package/dist/cjs/scripts/removeJobScheduler-3.js +49 -0
  60. package/dist/cjs/scripts/removeJobScheduler-3.js.map +1 -0
  61. package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
  62. package/dist/cjs/utils.js +25 -1
  63. package/dist/cjs/utils.js.map +1 -1
  64. package/dist/esm/classes/child-pool.d.ts +1 -1
  65. package/dist/esm/classes/child-pool.js +2 -2
  66. package/dist/esm/classes/child-pool.js.map +1 -1
  67. package/dist/esm/classes/job-scheduler.d.ts +30 -0
  68. package/dist/esm/classes/job-scheduler.js +135 -0
  69. package/dist/esm/classes/job-scheduler.js.map +1 -0
  70. package/dist/esm/classes/job.d.ts +6 -1
  71. package/dist/esm/classes/job.js +7 -3
  72. package/dist/esm/classes/job.js.map +1 -1
  73. package/dist/esm/classes/queue-events.d.ts +10 -0
  74. package/dist/esm/classes/queue-events.js.map +1 -1
  75. package/dist/esm/classes/queue-getters.d.ts +7 -0
  76. package/dist/esm/classes/queue-getters.js +10 -0
  77. package/dist/esm/classes/queue-getters.js.map +1 -1
  78. package/dist/esm/classes/queue-keys.js +1 -1
  79. package/dist/esm/classes/queue-keys.js.map +1 -1
  80. package/dist/esm/classes/queue.d.ts +54 -0
  81. package/dist/esm/classes/queue.js +74 -0
  82. package/dist/esm/classes/queue.js.map +1 -1
  83. package/dist/esm/classes/repeat.js +9 -10
  84. package/dist/esm/classes/repeat.js.map +1 -1
  85. package/dist/esm/classes/sandbox.js +57 -47
  86. package/dist/esm/classes/sandbox.js.map +1 -1
  87. package/dist/esm/classes/scripts.d.ts +3 -7
  88. package/dist/esm/classes/scripts.js +47 -41
  89. package/dist/esm/classes/scripts.js.map +1 -1
  90. package/dist/esm/classes/worker.d.ts +3 -0
  91. package/dist/esm/classes/worker.js +23 -4
  92. package/dist/esm/classes/worker.js.map +1 -1
  93. package/dist/esm/commands/addDelayedJob-6.lua +7 -7
  94. package/dist/esm/commands/addJobScheduler-2.lua +75 -0
  95. package/dist/esm/commands/addParentJob-4.lua +7 -7
  96. package/dist/esm/commands/addPrioritizedJob-8.lua +7 -7
  97. package/dist/esm/commands/addStandardJob-8.lua +7 -7
  98. package/dist/esm/commands/{cleanJobsInSet-2.lua → cleanJobsInSet-3.lua} +6 -5
  99. package/dist/esm/commands/drain-5.lua +41 -0
  100. package/dist/esm/commands/includes/cleanSet.lua +50 -29
  101. package/dist/esm/commands/includes/deduplicateJob.lua +25 -0
  102. package/dist/esm/commands/includes/removeZSetJobs.lua +13 -1
  103. package/dist/esm/commands/moveStalledJobsToWait-9.lua +2 -4
  104. package/dist/esm/commands/removeJob-2.lua +17 -9
  105. package/dist/esm/commands/removeJobScheduler-3.lua +43 -0
  106. package/dist/esm/enums/error-code.d.ts +2 -1
  107. package/dist/esm/enums/error-code.js +1 -0
  108. package/dist/esm/enums/error-code.js.map +1 -1
  109. package/dist/esm/interfaces/job-json.d.ts +1 -0
  110. package/dist/esm/scripts/addDelayedJob-6.js +18 -16
  111. package/dist/esm/scripts/addDelayedJob-6.js.map +1 -1
  112. package/dist/esm/scripts/addJobScheduler-2.d.ts +5 -0
  113. package/dist/esm/scripts/addJobScheduler-2.js +220 -0
  114. package/dist/esm/scripts/addJobScheduler-2.js.map +1 -0
  115. package/dist/esm/scripts/addParentJob-4.js +18 -16
  116. package/dist/esm/scripts/addParentJob-4.js.map +1 -1
  117. package/dist/esm/scripts/addPrioritizedJob-8.js +18 -16
  118. package/dist/esm/scripts/addPrioritizedJob-8.js.map +1 -1
  119. package/dist/esm/scripts/addStandardJob-8.js +18 -16
  120. package/dist/esm/scripts/addStandardJob-8.js.map +1 -1
  121. package/dist/esm/scripts/{cleanJobsInSet-2.js → cleanJobsInSet-3.js} +57 -35
  122. package/dist/esm/scripts/{cleanJobsInSet-2.js.map → cleanJobsInSet-3.js.map} +1 -1
  123. package/dist/esm/scripts/{drain-4.js → drain-5.js} +28 -7
  124. package/dist/esm/scripts/drain-5.js.map +1 -0
  125. package/dist/esm/scripts/index.d.ts +4 -2
  126. package/dist/esm/scripts/index.js +4 -2
  127. package/dist/esm/scripts/index.js.map +1 -1
  128. package/dist/esm/scripts/moveStalledJobsToWait-9.js +2 -3
  129. package/dist/esm/scripts/moveStalledJobsToWait-9.js.map +1 -1
  130. package/dist/esm/scripts/obliterate-2.js +11 -1
  131. package/dist/esm/scripts/obliterate-2.js.map +1 -1
  132. package/dist/esm/scripts/removeJob-2.js +16 -9
  133. package/dist/esm/scripts/removeJob-2.js.map +1 -1
  134. package/dist/esm/scripts/removeJobScheduler-3.d.ts +5 -0
  135. package/dist/esm/scripts/removeJobScheduler-3.js +46 -0
  136. package/dist/esm/scripts/removeJobScheduler-3.js.map +1 -0
  137. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  138. package/dist/esm/types/job-options.d.ts +5 -0
  139. package/dist/esm/utils.d.ts +7 -0
  140. package/dist/esm/utils.js +23 -0
  141. package/dist/esm/utils.js.map +1 -1
  142. package/package.json +1 -1
  143. package/dist/cjs/commands/drain-4.lua +0 -26
  144. package/dist/cjs/commands/includes/debounceJob.lua +0 -23
  145. package/dist/cjs/scripts/drain-4.js.map +0 -1
  146. package/dist/esm/commands/drain-4.lua +0 -26
  147. package/dist/esm/commands/includes/debounceJob.lua +0 -23
  148. package/dist/esm/scripts/drain-4.js.map +0 -1
  149. /package/dist/esm/scripts/{cleanJobsInSet-2.d.ts → cleanJobsInSet-3.d.ts} +0 -0
  150. /package/dist/esm/scripts/{drain-4.d.ts → drain-5.d.ts} +0 -0
@@ -16,6 +16,7 @@ const redis_connection_1 = require("./redis-connection");
16
16
  const sandbox_1 = require("./sandbox");
17
17
  const async_fifo_queue_1 = require("./async-fifo-queue");
18
18
  const errors_1 = require("./errors");
19
+ const job_scheduler_1 = require("./job-scheduler");
19
20
  // 10 seconds is the maximum time a BRPOPLPUSH can block.
20
21
  const maximumBlockTimeout = 10;
21
22
  // 30 seconds is the maximum limit until.
@@ -159,6 +160,16 @@ class Worker extends queue_base_1.QueueBase {
159
160
  resolve(this._repeat);
160
161
  });
161
162
  }
163
+ get jobScheduler() {
164
+ return new Promise(async (resolve) => {
165
+ if (!this._jobScheduler) {
166
+ const connection = await this.client;
167
+ this._jobScheduler = new job_scheduler_1.JobScheduler(this.name, Object.assign(Object.assign({}, this.opts), { connection }));
168
+ this._jobScheduler.on('error', e => this.emit.bind(this, e));
169
+ }
170
+ resolve(this._jobScheduler);
171
+ });
172
+ }
162
173
  async run() {
163
174
  if (!this.processFn) {
164
175
  throw new Error('No process function is defined.');
@@ -399,11 +410,19 @@ class Worker extends queue_base_1.QueueBase {
399
410
  this.drained = false;
400
411
  const job = this.createJob(jobData, jobId);
401
412
  job.token = token;
413
+ // Add next scheduled job if necessary.
402
414
  if (job.opts.repeat) {
403
- const repeat = await this.repeat;
404
- await repeat.updateRepeatableJob(job.name, job.data, job.opts, {
405
- override: false,
406
- });
415
+ // Use new job scheduler if possible
416
+ if (job.repeatJobKey) {
417
+ const jobScheduler = await this.jobScheduler;
418
+ await jobScheduler.upsertJobScheduler(job.repeatJobKey, job.opts.repeat, job.name, job.data, job.opts, { override: false });
419
+ }
420
+ else {
421
+ const repeat = await this.repeat;
422
+ await repeat.updateRepeatableJob(job.name, job.data, job.opts, {
423
+ override: false,
424
+ });
425
+ }
407
426
  }
408
427
  return job;
409
428
  }
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/classes/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/classes/worker.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@
25
25
  [7] parent dependencies key.
26
26
  [8] parent? {id, queueKey}
27
27
  [9] repeat job key
28
- [10] debounce key
28
+ [10] deduplication key
29
29
 
30
30
  ARGV[2] Json stringified job data
31
31
  ARGV[3] msgpacked options
@@ -52,12 +52,12 @@ local data = ARGV[2]
52
52
  local parentKey = args[5]
53
53
  local parent = args[8]
54
54
  local repeatJobKey = args[9]
55
- local debounceKey = args[10]
55
+ local deduplicationKey = args[10]
56
56
  local parentData
57
57
 
58
58
  -- Includes
59
59
  --- @include "includes/addDelayMarkerIfNeeded"
60
- --- @include "includes/debounceJob"
60
+ --- @include "includes/deduplicateJob"
61
61
  --- @include "includes/getDelayedScore"
62
62
  --- @include "includes/getOrSetMaxEvents"
63
63
  --- @include "includes/handleDuplicatedJob"
@@ -90,10 +90,10 @@ else
90
90
  end
91
91
  end
92
92
 
93
- local debouncedJobId = debounceJob(args[1], opts['de'],
94
- jobId, debounceKey, eventsKey, maxEvents)
95
- if debouncedJobId then
96
- return debouncedJobId
93
+ local deduplicationJobId = deduplicateJob(args[1], opts['de'],
94
+ jobId, deduplicationKey, eventsKey, maxEvents)
95
+ if deduplicationJobId then
96
+ return deduplicationJobId
97
97
  end
98
98
 
99
99
  -- Store the job.
@@ -0,0 +1,75 @@
1
+ --[[
2
+ Adds a job scheduler, i.e. a job factory that creates jobs based on a given schedule (repeat options).
3
+
4
+ Input:
5
+ KEYS[1] 'repeat' key
6
+ KEYS[2] 'delayed' key
7
+
8
+ ARGV[1] next milliseconds
9
+ ARGV[2] msgpacked options
10
+ [1] name
11
+ [2] tz?
12
+ [3] patten?
13
+ [4] endDate?
14
+ [5] every?
15
+ ARGV[3] jobs scheduler id
16
+ ARGV[4] prefix key
17
+
18
+ Output:
19
+ repeatableKey - OK
20
+ ]]
21
+ local rcall = redis.call
22
+ local repeatKey = KEYS[1]
23
+ local delayedKey = KEYS[2]
24
+
25
+ local nextMillis = ARGV[1]
26
+ local jobSchedulerId = ARGV[3]
27
+ local prefixKey = ARGV[4]
28
+
29
+ -- Includes
30
+ --- @include "includes/removeJob"
31
+
32
+ local function storeRepeatableJob(repeatKey, nextMillis, rawOpts)
33
+ rcall("ZADD", repeatKey, nextMillis, jobSchedulerId)
34
+ local opts = cmsgpack.unpack(rawOpts)
35
+
36
+ local optionalValues = {}
37
+ if opts['tz'] then
38
+ table.insert(optionalValues, "tz")
39
+ table.insert(optionalValues, opts['tz'])
40
+ end
41
+
42
+ if opts['pattern'] then
43
+ table.insert(optionalValues, "pattern")
44
+ table.insert(optionalValues, opts['pattern'])
45
+ end
46
+
47
+ if opts['endDate'] then
48
+ table.insert(optionalValues, "endDate")
49
+ table.insert(optionalValues, opts['endDate'])
50
+ end
51
+
52
+ if opts['every'] then
53
+ table.insert(optionalValues, "every")
54
+ table.insert(optionalValues, opts['every'])
55
+ end
56
+
57
+ rcall("HMSET", repeatKey .. ":" .. jobSchedulerId, "name", opts['name'],
58
+ unpack(optionalValues))
59
+ end
60
+
61
+ -- If we are overriding a repeatable job we must delete the delayed job for
62
+ -- the next iteration.
63
+ local prevMillis = rcall("ZSCORE", repeatKey, jobSchedulerId)
64
+ if prevMillis ~= false then
65
+ local delayedJobId = "repeat:" .. jobSchedulerId .. ":" .. prevMillis
66
+ local nextDelayedJobId = repeatKey .. ":" .. jobSchedulerId .. ":" .. nextMillis
67
+
68
+ if rcall("ZSCORE", delayedKey, delayedJobId) ~= false
69
+ and rcall("EXISTS", nextDelayedJobId) ~= 1 then
70
+ removeJob(delayedJobId, true, prefixKey, true --[[remove debounce key]])
71
+ rcall("ZREM", delayedKey, delayedJobId)
72
+ end
73
+ end
74
+
75
+ return storeRepeatableJob(repeatKey, nextMillis, ARGV[2])
@@ -20,7 +20,7 @@
20
20
  [7] parent dependencies key.
21
21
  [8] parent? {id, queueKey}
22
22
  [9] repeat job key
23
- [10] debounce key
23
+ [10] deduplication key
24
24
 
25
25
  ARGV[2] Json stringified job data
26
26
  ARGV[3] msgpacked options
@@ -47,11 +47,11 @@ local opts = cmsgpack.unpack(ARGV[3])
47
47
  local parentKey = args[5]
48
48
  local parent = args[8]
49
49
  local repeatJobKey = args[9]
50
- local debounceKey = args[10]
50
+ local deduplicationKey = args[10]
51
51
  local parentData
52
52
 
53
53
  -- Includes
54
- --- @include "includes/debounceJob"
54
+ --- @include "includes/deduplicateJob"
55
55
  --- @include "includes/getOrSetMaxEvents"
56
56
  --- @include "includes/handleDuplicatedJob"
57
57
  --- @include "includes/storeJob"
@@ -81,10 +81,10 @@ else
81
81
  end
82
82
  end
83
83
 
84
- local debouncedJobId = debounceJob(args[1], opts['de'],
85
- jobId, debounceKey, eventsKey, maxEvents)
86
- if debouncedJobId then
87
- return debouncedJobId
84
+ local deduplicationJobId = deduplicateJob(args[1], opts['de'],
85
+ jobId, deduplicationKey, eventsKey, maxEvents)
86
+ if deduplicationJobId then
87
+ return deduplicationJobId
88
88
  end
89
89
 
90
90
  -- Store the job.
@@ -24,7 +24,7 @@
24
24
  [7] parent dependencies key.
25
25
  [8] parent? {id, queueKey}
26
26
  [9] repeat job key
27
- [10] debounce key
27
+ [10] deduplication key
28
28
 
29
29
  ARGV[2] Json stringified job data
30
30
  ARGV[3] msgpacked options
@@ -54,12 +54,12 @@ local opts = cmsgpack.unpack(ARGV[3])
54
54
  local parentKey = args[5]
55
55
  local parent = args[8]
56
56
  local repeatJobKey = args[9]
57
- local debounceKey = args[10]
57
+ local deduplicationKey = args[10]
58
58
  local parentData
59
59
 
60
60
  -- Includes
61
61
  --- @include "includes/addJobWithPriority"
62
- --- @include "includes/debounceJob"
62
+ --- @include "includes/deduplicateJob"
63
63
  --- @include "includes/storeJob"
64
64
  --- @include "includes/getOrSetMaxEvents"
65
65
  --- @include "includes/handleDuplicatedJob"
@@ -90,10 +90,10 @@ else
90
90
  end
91
91
  end
92
92
 
93
- local debouncedJobId = debounceJob(args[1], opts['de'],
94
- jobId, debounceKey, eventsKey, maxEvents)
95
- if debouncedJobId then
96
- return debouncedJobId
93
+ local deduplicationJobId = deduplicateJob(args[1], opts['de'],
94
+ jobId, deduplicationKey, eventsKey, maxEvents)
95
+ if deduplicationJobId then
96
+ return deduplicationJobId
97
97
  end
98
98
 
99
99
  -- Store the job.
@@ -34,7 +34,7 @@
34
34
  [7] parent dependencies key.
35
35
  [8] parent? {id, queueKey}
36
36
  [9] repeat job key
37
- [10] debounce key
37
+ [10] deduplication key
38
38
 
39
39
  ARGV[2] Json stringified job data
40
40
  ARGV[3] msgpacked options
@@ -57,12 +57,12 @@ local opts = cmsgpack.unpack(ARGV[3])
57
57
  local parentKey = args[5]
58
58
  local parent = args[8]
59
59
  local repeatJobKey = args[9]
60
- local debounceKey = args[10]
60
+ local deduplicationKey = args[10]
61
61
  local parentData
62
62
 
63
63
  -- Includes
64
64
  --- @include "includes/addJobInTargetList"
65
- --- @include "includes/debounceJob"
65
+ --- @include "includes/deduplicateJob"
66
66
  --- @include "includes/getOrSetMaxEvents"
67
67
  --- @include "includes/getTargetQueueList"
68
68
  --- @include "includes/handleDuplicatedJob"
@@ -94,10 +94,10 @@ else
94
94
  end
95
95
  end
96
96
 
97
- local debouncedJobId = debounceJob(args[1], opts['de'],
98
- jobId, debounceKey, eventsKey, maxEvents)
99
- if debouncedJobId then
100
- return debouncedJobId
97
+ local deduplicationJobId = deduplicateJob(args[1], opts['de'],
98
+ jobId, deduplicationKey, eventsKey, maxEvents)
99
+ if deduplicationJobId then
100
+ return deduplicationJobId
101
101
  end
102
102
 
103
103
  -- Store the job.
@@ -4,6 +4,7 @@
4
4
  Input:
5
5
  KEYS[1] set key,
6
6
  KEYS[2] events stream key
7
+ KEYS[3] job schedulers key
7
8
 
8
9
  ARGV[1] jobKey prefix
9
10
  ARGV[2] timestamp
@@ -32,21 +33,21 @@ end
32
33
 
33
34
  local result
34
35
  if ARGV[4] == "active" then
35
- result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], false)
36
+ result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], false --[[ hasFinished ]])
36
37
  elseif ARGV[4] == "delayed" then
37
38
  rangeEnd = "+inf"
38
39
  result = cleanSet(KEYS[1], ARGV[1], rangeEnd, ARGV[2], limit,
39
- {"processedOn", "timestamp"}, false)
40
+ {"processedOn", "timestamp"}, false --[[ hasFinished ]], KEYS[3])
40
41
  elseif ARGV[4] == "prioritized" then
41
42
  rangeEnd = "+inf"
42
43
  result = cleanSet(KEYS[1], ARGV[1], rangeEnd, ARGV[2], limit,
43
- {"timestamp"}, false)
44
+ {"timestamp"}, false --[[ hasFinished ]])
44
45
  elseif ARGV[4] == "wait" or ARGV[4] == "paused" then
45
- result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], true)
46
+ result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], true --[[ hasFinished ]])
46
47
  else
47
48
  rangeEnd = ARGV[2]
48
49
  result = cleanSet(KEYS[1], ARGV[1], rangeEnd, ARGV[2], limit,
49
- {"finishedOn"}, true)
50
+ {"finishedOn"}, true --[[ hasFinished ]])
50
51
  end
51
52
 
52
53
  rcall("XADD", KEYS[2], "*", "event", "cleaned", "count", result[2])
@@ -0,0 +1,41 @@
1
+ --[[
2
+ Drains the queue, removes all jobs that are waiting
3
+ or delayed, but not active, completed or failed
4
+
5
+ Input:
6
+ KEYS[1] 'wait',
7
+ KEYS[2] 'paused'
8
+ KEYS[3] 'delayed'
9
+ KEYS[4] 'prioritized'
10
+ KEYS[5] 'jobschedulers' (repeat)
11
+
12
+ ARGV[1] queue key prefix
13
+ ]]
14
+ local rcall = redis.call
15
+ local queueBaseKey = ARGV[1]
16
+
17
+ --- @include "includes/removeListJobs"
18
+ --- @include "includes/removeZSetJobs"
19
+
20
+ removeListJobs(KEYS[1], true, queueBaseKey, 0) -- wait
21
+ removeListJobs(KEYS[2], true, queueBaseKey, 0) -- paused
22
+
23
+ if KEYS[3] ~= "" then
24
+
25
+ -- We must not remove delayed jobs if they are associated to a job scheduler.
26
+ local scheduledJobs = {}
27
+ local jobSchedulers = rcall("ZRANGE", KEYS[5], 0, -1, "WITHSCORES")
28
+
29
+ -- For every job scheduler, get the current delayed job id.
30
+ for i = 1, #jobSchedulers, 2 do
31
+ local jobSchedulerId = jobSchedulers[i]
32
+ local jobSchedulerMillis = jobSchedulers[i + 1]
33
+
34
+ local delayedJobId = "repeat:" .. jobSchedulerId .. ":" .. jobSchedulerMillis
35
+ scheduledJobs[delayedJobId] = true
36
+ end
37
+
38
+ removeZSetJobs(KEYS[3], true, queueBaseKey, 0, scheduledJobs) -- delayed
39
+ end
40
+
41
+ removeZSetJobs(KEYS[4], true, queueBaseKey, 0) -- prioritized
@@ -1,45 +1,66 @@
1
1
  --[[
2
2
  Function to clean job set.
3
3
  Returns jobIds and deleted count number.
4
- ]]
4
+ ]]
5
5
 
6
6
  -- Includes
7
7
  --- @include "batches"
8
8
  --- @include "getJobsInZset"
9
9
  --- @include "getTimestamp"
10
10
  --- @include "removeJob"
11
-
12
- local function cleanSet(setKey, jobKeyPrefix, rangeEnd, timestamp, limit, attributes, isFinished)
13
- local jobs = getJobsInZset(setKey, rangeEnd, limit)
14
- local deleted = {}
15
- local deletedCount = 0
16
- local jobTS
17
- for i, job in ipairs(jobs) do
18
- if limit > 0 and deletedCount >= limit then
19
- break
11
+ local function isJobSchedulerJob(jobId, jobSchedulersKey)
12
+ if jobSchedulersKey then
13
+ local jobSchedulerId = jobId:match("repeat:(.*):%d+")
14
+ if jobSchedulerId then
15
+ return rcall("ZSCORE", jobSchedulersKey, jobSchedulerId)
16
+ end
20
17
  end
18
+ return false
19
+ end
20
+
21
+ local function cleanSet(
22
+ setKey,
23
+ jobKeyPrefix,
24
+ rangeEnd,
25
+ timestamp,
26
+ limit,
27
+ attributes,
28
+ isFinished,
29
+ jobSchedulersKey)
30
+ local jobs = getJobsInZset(setKey, rangeEnd, limit)
31
+ local deleted = {}
32
+ local deletedCount = 0
33
+ local jobTS
34
+ for i, job in ipairs(jobs) do
35
+ if limit > 0 and deletedCount >= limit then
36
+ break
37
+ end
21
38
 
22
- local jobKey = jobKeyPrefix .. job
23
- if isFinished then
24
- removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]])
25
- deletedCount = deletedCount + 1
26
- table.insert(deleted, job)
27
- else
28
- -- * finishedOn says when the job was completed, but it isn't set unless the job has actually completed
29
- jobTS = getTimestamp(jobKey, attributes)
30
- if (not jobTS or jobTS <= timestamp) then
31
- removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]])
32
- deletedCount = deletedCount + 1
33
- table.insert(deleted, job)
34
- end
39
+ -- Extract a Job Scheduler Id from jobId ("repeat:job-scheduler-id:millis")
40
+ -- and check if it is in the scheduled jobs
41
+ if not isJobSchedulerJob(job, jobSchedulersKey) then
42
+ local jobKey = jobKeyPrefix .. job
43
+ if isFinished then
44
+ removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]] )
45
+ deletedCount = deletedCount + 1
46
+ table.insert(deleted, job)
47
+ else
48
+ -- * finishedOn says when the job was completed, but it isn't set unless the job has actually completed
49
+ jobTS = getTimestamp(jobKey, attributes)
50
+ if (not jobTS or jobTS <= timestamp) then
51
+ removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]] )
52
+ deletedCount = deletedCount + 1
53
+ table.insert(deleted, job)
54
+ end
55
+ end
56
+ end
35
57
  end
36
- end
37
58
 
38
- if(#deleted > 0) then
39
- for from, to in batches(#deleted, 7000) do
40
- rcall("ZREM", setKey, unpack(deleted, from, to))
59
+ if (#deleted > 0) then
60
+ for from, to in batches(#deleted, 7000) do
61
+ rcall("ZREM", setKey, unpack(deleted, from, to))
62
+ end
41
63
  end
42
- end
43
64
 
44
- return {deleted, deletedCount}
65
+ return {deleted, deletedCount}
45
66
  end
@@ -0,0 +1,25 @@
1
+ --[[
2
+ Function to debounce a job.
3
+ ]]
4
+
5
+ local function deduplicateJob(prefixKey, deduplicationOpts, jobId, deduplicationKey, eventsKey, maxEvents)
6
+ local deduplicationId = deduplicationOpts and deduplicationOpts['id']
7
+ if deduplicationId then
8
+ local ttl = deduplicationOpts['ttl']
9
+ local deduplicationKeyExists
10
+ if ttl then
11
+ deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
12
+ else
13
+ deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
14
+ end
15
+ if deduplicationKeyExists then
16
+ local currentDebounceJobId = rcall('GET', deduplicationKey)
17
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
18
+ "debounced", "jobId", currentDebounceJobId, "debounceId", deduplicationId)
19
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
20
+ "deduplicated", "jobId", currentDebounceJobId, "deduplicationId", deduplicationId)
21
+ return currentDebounceJobId
22
+ end
23
+ end
24
+ end
25
+
@@ -3,8 +3,20 @@
3
3
  --- @include "getZSetItems"
4
4
  --- @include "removeJobs"
5
5
 
6
- local function removeZSetJobs(keyName, hard, baseKey, max)
6
+ local function removeZSetJobs(keyName, hard, baseKey, max, jobsToIgnore)
7
7
  local jobs = getZSetItems(keyName, max)
8
+
9
+ -- filter out jobs to ignore
10
+ if jobsToIgnore then
11
+ local filteredJobs = {}
12
+ for i = 1, #jobs do
13
+ if not jobsToIgnore[jobs[i]] then
14
+ table.insert(filteredJobs, jobs[i])
15
+ end
16
+ end
17
+ jobs = filteredJobs
18
+ end
19
+
8
20
  local count = removeJobs(jobs, hard, baseKey, max)
9
21
  if(#jobs > 0) then
10
22
  for from, to in batches(#jobs, 7000) do
@@ -44,7 +44,7 @@ local metaKey = KEYS[6]
44
44
  local pausedKey = KEYS[7]
45
45
  local markerKey = KEYS[8]
46
46
  local eventStreamKey = KEYS[9]
47
- local maxStalledJobCount = ARGV[1]
47
+ local maxStalledJobCount = tonumber(ARGV[1])
48
48
  local queueKeyPrefix = ARGV[2]
49
49
  local timestamp = ARGV[3]
50
50
  local maxCheckTime = ARGV[4]
@@ -63,8 +63,6 @@ local failed = {}
63
63
  if (#stalling > 0) then
64
64
  rcall('DEL', stalledKey)
65
65
 
66
- local MAX_STALLED_JOB_COUNT = tonumber(maxStalledJobCount)
67
-
68
66
  -- Remove from active list
69
67
  for i, jobId in ipairs(stalling) do
70
68
  -- Markers in waitlist DEPRECATED in v5: Remove in v6.
@@ -83,7 +81,7 @@ if (#stalling > 0) then
83
81
  -- If this job has been stalled too many times, such as if it crashes the worker, then fail it.
84
82
  local stalledCount =
85
83
  rcall("HINCRBY", jobKey, "stalledCounter", 1)
86
- if (stalledCount > MAX_STALLED_JOB_COUNT) then
84
+ if (stalledCount > maxStalledJobCount) then
87
85
  local jobAttributes = rcall("HMGET", jobKey, "opts", "parent", "deid")
88
86
  local rawOpts = jobAttributes[1]
89
87
  local rawParentData = jobAttributes[2]